/* eslint-disable */
(() => {
	'use strict';
	let getParameterByName = name => {
		let str = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
		let regex = new RegExp('[\\?&]' + str + '=([^&#]*)');
		let results = regex.exec(location.search);
		return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : '';
	};
	const uploadUrl = getParameterByName('upload');
	const uploadToken = getParameterByName('token'); // 上传pdf文件token
	// const file = getParameterByName('file'); // 直接使用已支持的参数file
	const changePageNumberOperationId = 'changePageNumber';
	var __webpack_modules__ = [
		,
		(__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0;
			const compatibilityParams = Object.create(null);
			exports.compatibilityParams = compatibilityParams;
			{
				const userAgent = navigator.userAgent || '';
				const platform = navigator.platform || '';
				const maxTouchPoints = navigator.maxTouchPoints || 1;
				const isAndroid = /Android/.test(userAgent);
				const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || (platform === 'MacIntel' && maxTouchPoints > 1);

				(function checkCanvasSizeLimitation() {
					if (isIOS || isAndroid) {
						compatibilityParams.maxCanvasPixels = 5242880;
					}
				})();
			}
			const OptionKind = {
				VIEWER: 0x02,
				API: 0x04,
				WORKER: 0x08,
				PREFERENCE: 0x80
			};
			exports.OptionKind = OptionKind;
			const defaultOptions = {
				annotationMode: {
					value: 2,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				cursorToolOnLoad: {
					value: 0,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				defaultUrl: {
					value: '',
					kind: OptionKind.VIEWER
				},
				defaultZoomValue: {
					value: '',
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				disableHistory: {
					value: false,
					kind: OptionKind.VIEWER
				},
				disablePageLabels: {
					value: false,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				enablePermissions: {
					value: false,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				enableScripting: {
					value: true,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				externalLinkRel: {
					value: 'noopener noreferrer nofollow',
					kind: OptionKind.VIEWER
				},
				externalLinkTarget: {
					value: 0,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				historyUpdateUrl: {
					value: false,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				ignoreDestinationZoom: {
					value: false,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				imageResourcesPath: {
					value: './images/',
					kind: OptionKind.VIEWER
				},
				maxCanvasPixels: {
					value: 16777216,
					compatibility: compatibilityParams.maxCanvasPixels,
					kind: OptionKind.VIEWER
				},
				pageColorsBackground: {
					value: 'Canvas',
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				pageColorsForeground: {
					value: 'CanvasText',
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				pdfBugEnabled: {
					value: false,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				renderer: {
					value: 'canvas',
					kind: OptionKind.VIEWER
				},
				sidebarViewOnLoad: {
					value: -1,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				scrollModeOnLoad: {
					value: -1,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				spreadModeOnLoad: {
					value: -1,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				textLayerMode: {
					value: 1,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				useOnlyCssZoom: {
					value: false,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				viewerCssTheme: {
					value: 0,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				viewOnLoad: {
					value: 0,
					kind: OptionKind.VIEWER + OptionKind.PREFERENCE
				},
				cMapPacked: {
					value: true,
					kind: OptionKind.API
				},
				cMapUrl: {
					value: '../cmaps/',
					kind: OptionKind.API
				},
				disableAutoFetch: {
					value: false,
					kind: OptionKind.API + OptionKind.PREFERENCE
				},
				disableFontFace: {
					value: false,
					kind: OptionKind.API + OptionKind.PREFERENCE
				},
				disableRange: {
					value: false,
					kind: OptionKind.API + OptionKind.PREFERENCE
				},
				disableStream: {
					value: false,
					kind: OptionKind.API + OptionKind.PREFERENCE
				},
				docBaseUrl: {
					value: '',
					kind: OptionKind.API
				},
				enableXfa: {
					value: true,
					kind: OptionKind.API + OptionKind.PREFERENCE
				},
				fontExtraProperties: {
					value: false,
					kind: OptionKind.API
				},
				isEvalSupported: {
					value: true,
					kind: OptionKind.API
				},
				maxImageSize: {
					value: -1,
					kind: OptionKind.API
				},
				pdfBug: {
					value: false,
					kind: OptionKind.API
				},
				standardFontDataUrl: {
					value: '../web/standard_fonts/',
					kind: OptionKind.API
				},
				verbosity: {
					value: 1,
					kind: OptionKind.API
				},
				workerPort: {
					value: null,
					kind: OptionKind.WORKER
				},
				workerSrc: {
					value: './build/pdf.worker.js',
					kind: OptionKind.WORKER
				}
			};
			{
				defaultOptions.disablePreferences = {
					value: false,
					kind: OptionKind.VIEWER
				};
				defaultOptions.locale = {
					value: navigator.language || 'en-US',
					kind: OptionKind.VIEWER
				};
				defaultOptions.sandboxBundleSrc = {
					value: './build/pdf.sandbox.js',
					kind: OptionKind.VIEWER
				};
				defaultOptions.renderer.kind += OptionKind.PREFERENCE;
			}
			const userOptions = Object.create(null);

			class AppOptions {
				constructor() {
					throw new Error('Cannot initialize AppOptions.');
				}

				static get(name) {
					const userOption = userOptions[name];

					if (userOption !== undefined) {
						return userOption;
					}

					const defaultOption = defaultOptions[name];

					if (defaultOption !== undefined) {
						return defaultOption.compatibility ?? defaultOption.value;
					}

					return undefined;
				}

				static getAll(kind = null) {
					const options = Object.create(null);

					for (const name in defaultOptions) {
						const defaultOption = defaultOptions[name];

						if (kind) {
							if ((kind & defaultOption.kind) === 0) {
								continue;
							}

							if (kind === OptionKind.PREFERENCE) {
								const value = defaultOption.value,
									valueType = typeof value;

								if (valueType === 'boolean' || valueType === 'string' || (valueType === 'number' && Number.isInteger(value))) {
									options[name] = value;
									continue;
								}

								throw new Error(`Invalid type for preference: ${name}`);
							}
						}

						const userOption = userOptions[name];
						options[name] = userOption !== undefined ? userOption : defaultOption.compatibility ?? defaultOption.value;
					}

					return options;
				}

				static set(name, value) {
					userOptions[name] = value;
				}

				static setAll(options) {
					for (const name in options) {
						userOptions[name] = options[name];
					}
				}

				static remove(name) {
					delete userOptions[name];
				}

				static _hasUserOptions() {
					return Object.keys(userOptions).length > 0;
				}
			}

			exports.AppOptions = AppOptions;

			/***/
		},
		/* 2 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFViewerApplication = exports.DefaultExternalServices = void 0;

			var _ui_utils = __webpack_require__(3);

			var _app_options = __webpack_require__(1);

			var _event_utils = __webpack_require__(4);

			var _pdfjsLib = __webpack_require__(5);

			var _pdf_cursor_tools = __webpack_require__(6);

			var _pdf_link_service = __webpack_require__(8);

			var _overlay_manager = __webpack_require__(9);

			var _password_prompt = __webpack_require__(10);

			var _pdf_attachment_viewer = __webpack_require__(11);

			var _pdf_find_bar = __webpack_require__(14);

			var _pdf_find_controller = __webpack_require__(15);

			var _pdf_history = __webpack_require__(17);

			var _pdf_layer_viewer = __webpack_require__(18);

			var _pdf_outline_viewer = __webpack_require__(19);

			var _pdf_presentation_mode = __webpack_require__(20);

			var _pdf_rendering_queue = __webpack_require__(21);

			var _pdf_scripting_manager = __webpack_require__(22);

			var _pdf_sidebar = __webpack_require__(23);

			var _pdf_sidebar_resizer = __webpack_require__(24);

			var _pdf_thumbnail_viewer = __webpack_require__(25);

			var _pdf_viewer = __webpack_require__(27);

			var _secondary_toolbar = __webpack_require__(36);

			var _toolbar = __webpack_require__(37);

			var _view_history = __webpack_require__(38);

			const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;
			const FORCE_PAGES_LOADED_TIMEOUT = 10000;
			const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000;
			const ViewOnLoad = {
				UNKNOWN: -1,
				PREVIOUS: 0,
				INITIAL: 1
			};
			const ViewerCssTheme = {
				AUTOMATIC: 0,
				LIGHT: 1,
				DARK: 2
			};
			const KNOWN_VERSIONS = ['1.0', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6', '1.7', '1.8', '1.9', '2.0', '2.1', '2.2', '2.3'];
			const KNOWN_GENERATORS = [
				'acrobat distiller',
				'acrobat pdfwriter',
				'adobe livecycle',
				'adobe pdf library',
				'adobe photoshop',
				'ghostscript',
				'tcpdf',
				'cairo',
				'dvipdfm',
				'dvips',
				'pdftex',
				'pdfkit',
				'itext',
				'prince',
				'quarkxpress',
				'mac os x',
				'microsoft',
				'openoffice',
				'oracle',
				'luradocument',
				'pdf-xchange',
				'antenna house',
				'aspose.cells',
				'fpdf'
			];

			class DefaultExternalServices {
				constructor() {
					throw new Error('Cannot initialize DefaultExternalServices.');
				}

				static updateFindControlState(data) {}

				static updateFindMatchesCount(data) {}

				static initPassiveLoading(callbacks) {}

				static reportTelemetry(data) {}

				static createPreferences() {
					throw new Error('Not implemented: createPreferences');
				}

				static createL10n(options) {
					throw new Error('Not implemented: createL10n');
				}

				static createScripting(options) {
					throw new Error('Not implemented: createScripting');
				}

				static get supportsIntegratedFind() {
					return (0, _pdfjsLib.shadow)(this, 'supportsIntegratedFind', false);
				}

				static get supportsDocumentFonts() {
					return (0, _pdfjsLib.shadow)(this, 'supportsDocumentFonts', true);
				}

				static get supportedMouseWheelZoomModifierKeys() {
					return (0, _pdfjsLib.shadow)(this, 'supportedMouseWheelZoomModifierKeys', {
						ctrlKey: true,
						metaKey: true
					});
				}

				static get isInAutomation() {
					return (0, _pdfjsLib.shadow)(this, 'isInAutomation', false);
				}
			}

			exports.DefaultExternalServices = DefaultExternalServices;
			const PDFViewerApplication = {
				initialBookmark: document.location.hash.substring(1),
				_initializedCapability: (0, _pdfjsLib.createPromiseCapability)(),
				appConfig: null,
				pdfDocument: null,
				pdfLoadingTask: null,
				pdfViewer: null,
				pdfThumbnailViewer: null,
				pdfRenderingQueue: null,
				pdfPresentationMode: null,
				pdfLinkService: null,
				pdfHistory: null,
				pdfSidebar: null,
				pdfSidebarResizer: null,
				pdfOutlineViewer: null,
				pdfAttachmentViewer: null,
				pdfLayerViewer: null,
				pdfCursorTools: null,
				pdfScriptingManager: null,
				store: null,
				overlayManager: null,
				preferences: null,
				toolbar: null,
				secondaryToolbar: null,
				eventBus: null,
				l10n: null,
				isInitialViewSet: false,
				isViewerEmbedded: window.parent !== window,
				url: '',
				baseUrl: '',
				externalServices: DefaultExternalServices,
				_boundEvents: Object.create(null),
				documentInfo: null,
				metadata: null,
				_contentDispositionFilename: null,
				_contentLength: null,
				_saveInProgress: false,
				_docStats: null,
				_wheelUnusedTicks: 0,
				_idleCallbacks: new Set(),
				_PDFBug: null,

				async initialize(appConfig) {
					this.preferences = this.externalServices.createPreferences();
					this.appConfig = appConfig;
					await this._readPreferences();
					await this._parseHashParameters();

					this._forceCssTheme();

					await this._initializeL10n();

					if (this.isViewerEmbedded && _app_options.AppOptions.get('externalLinkTarget') === _pdf_link_service.LinkTarget.NONE) {
						_app_options.AppOptions.set('externalLinkTarget', _pdf_link_service.LinkTarget.TOP);
					}

					await this._initializeViewerComponents();
					this.bindEvents();
					this.bindWindowEvents();
					const appContainer = appConfig.appContainer || document.documentElement;
					this.l10n.translate(appContainer).then(() => {
						this.eventBus.dispatch('localized', {
							source: this
						});
					});

					this._initializedCapability.resolve();
				},

				async _readPreferences() {
					if (_app_options.AppOptions.get('disablePreferences')) {
						return;
					}

					if (_app_options.AppOptions._hasUserOptions()) {
						console.warn('_readPreferences: The Preferences may override manually set AppOptions; ' + 'please use the "disablePreferences"-option in order to prevent that.');
					}

					try {
						_app_options.AppOptions.setAll(await this.preferences.getAll());
					} catch (reason) {
						console.error(`_readPreferences: "${reason?.message}".`);
					}
				},

				async _parseHashParameters() {
					if (!_app_options.AppOptions.get('pdfBugEnabled')) {
						return;
					}

					const hash = document.location.hash.substring(1);

					if (!hash) {
						return;
					}

					const { mainContainer, viewerContainer } = this.appConfig,
						params = (0, _ui_utils.parseQueryString)(hash);

					if (params.get('disableworker') === 'true') {
						try {
							await loadFakeWorker();
						} catch (ex) {
							console.error(`_parseHashParameters: "${ex.message}".`);
						}
					}

					if (params.has('disablerange')) {
						_app_options.AppOptions.set('disableRange', params.get('disablerange') === 'true');
					}

					if (params.has('disablestream')) {
						_app_options.AppOptions.set('disableStream', params.get('disablestream') === 'true');
					}

					if (params.has('disableautofetch')) {
						_app_options.AppOptions.set('disableAutoFetch', params.get('disableautofetch') === 'true');
					}

					if (params.has('disablefontface')) {
						_app_options.AppOptions.set('disableFontFace', params.get('disablefontface') === 'true');
					}

					if (params.has('disablehistory')) {
						_app_options.AppOptions.set('disableHistory', params.get('disablehistory') === 'true');
					}

					if (params.has('verbosity')) {
						_app_options.AppOptions.set('verbosity', params.get('verbosity') | 0);
					}

					if (params.has('textlayer')) {
						switch (params.get('textlayer')) {
							case 'off':
								_app_options.AppOptions.set('textLayerMode', _ui_utils.TextLayerMode.DISABLE);

								break;

							case 'visible':
							case 'shadow':
							case 'hover':
								viewerContainer.classList.add(`textLayer-${params.get('textlayer')}`);

								try {
									await loadPDFBug(this);

									this._PDFBug.loadCSS();
								} catch (ex) {
									console.error(`_parseHashParameters: "${ex.message}".`);
								}

								break;
						}
					}

					if (params.has('pdfbug')) {
						_app_options.AppOptions.set('pdfBug', true);

						_app_options.AppOptions.set('fontExtraProperties', true);

						const enabled = params.get('pdfbug').split(',');

						try {
							await loadPDFBug(this);

							this._PDFBug.init(
								{
									OPS: _pdfjsLib.OPS
								},
								mainContainer,
								enabled
							);
						} catch (ex) {
							console.error(`_parseHashParameters: "${ex.message}".`);
						}
					}

					if (params.has('locale')) {
						_app_options.AppOptions.set('locale', params.get('locale'));
					}
				},

				async _initializeL10n() {
					this.l10n = this.externalServices.createL10n({
						locale: _app_options.AppOptions.get('locale')
					});
					const dir = await this.l10n.getDirection();
					document.getElementsByTagName('html')[0].dir = dir;
				},

				_forceCssTheme() {
					const cssTheme = _app_options.AppOptions.get('viewerCssTheme');

					if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) {
						return;
					}

					try {
						const styleSheet = document.styleSheets[0];
						const cssRules = styleSheet?.cssRules || [];

						for (let i = 0, ii = cssRules.length; i < ii; i++) {
							const rule = cssRules[i];

							if (rule instanceof CSSMediaRule && rule.media?.[0] === '(prefers-color-scheme: dark)') {
								if (cssTheme === ViewerCssTheme.LIGHT) {
									styleSheet.deleteRule(i);
									return;
								}

								const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText);

								if (darkRules?.[1]) {
									styleSheet.deleteRule(i);
									styleSheet.insertRule(darkRules[1], i);
								}

								return;
							}
						}
					} catch (reason) {
						console.error(`_forceCssTheme: "${reason?.message}".`);
					}
				},

				async _initializeViewerComponents() {
					const { appConfig, externalServices } = this;
					const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus();
					this.eventBus = eventBus;
					this.overlayManager = new _overlay_manager.OverlayManager();
					const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
					pdfRenderingQueue.onIdle = this._cleanup.bind(this);
					this.pdfRenderingQueue = pdfRenderingQueue;
					const pdfLinkService = new _pdf_link_service.PDFLinkService({
						eventBus,
						externalLinkTarget: _app_options.AppOptions.get('externalLinkTarget'),
						externalLinkRel: _app_options.AppOptions.get('externalLinkRel'),
						ignoreDestinationZoom: _app_options.AppOptions.get('ignoreDestinationZoom')
					});
					this.pdfLinkService = pdfLinkService;
					const findController = new _pdf_find_controller.PDFFindController({
						linkService: pdfLinkService,
						eventBus
					});
					this.findController = findController;
					const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({
						eventBus,
						sandboxBundleSrc: _app_options.AppOptions.get('sandboxBundleSrc'),
						scriptingFactory: externalServices
					});
					this.pdfScriptingManager = pdfScriptingManager;
					const container = appConfig.mainContainer;
					const viewer = appConfig.viewerContainer;
					this.pdfViewer = new _pdf_viewer.PDFViewer({
						container,
						viewer,
						eventBus,
						renderingQueue: pdfRenderingQueue,
						linkService: pdfLinkService,
						findController,
						scriptingManager: _app_options.AppOptions.get('enableScripting') && pdfScriptingManager,
						renderer: _app_options.AppOptions.get('renderer'),
						l10n: this.l10n,
						textLayerMode: _app_options.AppOptions.get('textLayerMode'),
						annotationMode: _app_options.AppOptions.get('annotationMode'),
						imageResourcesPath: _app_options.AppOptions.get('imageResourcesPath'),
						useOnlyCssZoom: _app_options.AppOptions.get('useOnlyCssZoom'),
						maxCanvasPixels: _app_options.AppOptions.get('maxCanvasPixels'),
						enablePermissions: _app_options.AppOptions.get('enablePermissions'),
						pageColors: {
							background: _app_options.AppOptions.get('pageColorsBackground'),
							foreground: _app_options.AppOptions.get('pageColorsForeground')
						}
					});
					pdfRenderingQueue.setViewer(this.pdfViewer);
					pdfLinkService.setViewer(this.pdfViewer);
					pdfScriptingManager.setViewer(this.pdfViewer);
					this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({
						container: appConfig.sidebar.thumbnailView,
						eventBus,
						renderingQueue: pdfRenderingQueue,
						linkService: pdfLinkService,
						l10n: this.l10n
					});
					pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);

					if (!this.isViewerEmbedded && !_app_options.AppOptions.get('disableHistory')) {
						this.pdfHistory = new _pdf_history.PDFHistory({
							linkService: pdfLinkService,
							eventBus
						});
						pdfLinkService.setHistory(this.pdfHistory);
					}

					if (!this.supportsIntegratedFind) {
						this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n);
					}

					this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({
						container,
						eventBus,
						cursorToolOnLoad: _app_options.AppOptions.get('cursorToolOnLoad')
					});
					this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n);
					this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus);

					if (this.supportsFullscreen) {
						this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({
							container,
							pdfViewer: this.pdfViewer,
							eventBus
						});
					}

					this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded);
					this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({
						container: appConfig.sidebar.outlineView,
						eventBus,
						linkService: pdfLinkService
					});
					this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({
						container: appConfig.sidebar.attachmentsView,
						eventBus
					});
					this.pdfLayerViewer = new _pdf_layer_viewer.PDFLayerViewer({
						container: appConfig.sidebar.layersView,
						eventBus,
						l10n: this.l10n
					});
					this.pdfSidebar = new _pdf_sidebar.PDFSidebar({
						elements: appConfig.sidebar,
						pdfViewer: this.pdfViewer,
						pdfThumbnailViewer: this.pdfThumbnailViewer,
						eventBus,
						l10n: this.l10n
					});
					this.pdfSidebar.onToggled = this.forceRendering.bind(this);
					this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n);
				},

				run(config) {
					this.initialize(config).then(webViewerInitialized);
				},

				get initialized() {
					return this._initializedCapability.settled;
				},

				get initializedPromise() {
					return this._initializedCapability.promise;
				},

				zoomIn(steps) {
					if (this.pdfViewer.isInPresentationMode) {
						return;
					}

					this.pdfViewer.increaseScale(steps);
				},

				zoomOut(steps) {
					if (this.pdfViewer.isInPresentationMode) {
						return;
					}

					this.pdfViewer.decreaseScale(steps);
				},

				zoomReset() {
					if (this.pdfViewer.isInPresentationMode) {
						return;
					}

					this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
				},

				get pagesCount() {
					return this.pdfDocument ? this.pdfDocument.numPages : 0;
				},

				get page() {
					return this.pdfViewer.currentPageNumber;
				},

				set page(val) {
					this.pdfViewer.currentPageNumber = val;
				},

				get supportsFullscreen() {
					return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', document.fullscreenEnabled);
				},

				get supportsIntegratedFind() {
					return this.externalServices.supportsIntegratedFind;
				},

				get supportsDocumentFonts() {
					return this.externalServices.supportsDocumentFonts;
				},

				get loadingBar() {
					const bar = new _ui_utils.ProgressBar('#loadingBar');
					return (0, _pdfjsLib.shadow)(this, 'loadingBar', bar);
				},

				get supportedMouseWheelZoomModifierKeys() {
					return this.externalServices.supportedMouseWheelZoomModifierKeys;
				},

				initPassiveLoading() {
					throw new Error('Not implemented: initPassiveLoading');
				},

				setTitleUsingUrl(url = '') {
					this.url = url;
					this.baseUrl = url.split('#')[0];

					let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, '');

					if (!title) {
						try {
							title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url;
						} catch (ex) {
							title = url;
						}
					}

					this.setTitle(title);
				},

				setTitle(title) {
					if (this.isViewerEmbedded) {
						return;
					}

					document.title = title;
				},

				get _docFilename() {
					return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url);
				},

				_hideViewBookmark() {
					const { toolbar, secondaryToolbar } = this.appConfig;
					toolbar.viewBookmark.hidden = true;
					secondaryToolbar.viewBookmarkButton.hidden = true;
				},

				_cancelIdleCallbacks() {
					if (!this._idleCallbacks.size) {
						return;
					}

					for (const callback of this._idleCallbacks) {
						window.cancelIdleCallback(callback);
					}

					this._idleCallbacks.clear();
				},

				async close() {
					this._unblockDocumentLoadEvent();

					this._hideViewBookmark();

					const { container } = this.appConfig.errorWrapper;
					container.hidden = true;

					if (!this.pdfLoadingTask) {
						return;
					}

					if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) {
						try {
							await this.save({
								sourceEventType: 'save'
							});
						} catch (reason) {}
					}

					const promises = [];
					promises.push(this.pdfLoadingTask.destroy());
					this.pdfLoadingTask = null;

					if (this.pdfDocument) {
						this.pdfDocument = null;
						this.pdfThumbnailViewer.setDocument(null);
						this.pdfViewer.setDocument(null);
						this.pdfLinkService.setDocument(null);
					}

					this.pdfLinkService.externalLinkEnabled = true;
					this.store = null;
					this.isInitialViewSet = false;
					this.url = '';
					this.baseUrl = '';
					this.documentInfo = null;
					this.metadata = null;
					this._contentDispositionFilename = null;
					this._contentLength = null;
					this._saveInProgress = false;
					this._docStats = null;

					this._cancelIdleCallbacks();

					promises.push(this.pdfScriptingManager.destroyPromise);
					this.pdfSidebar.reset();
					this.pdfOutlineViewer.reset();
					this.pdfAttachmentViewer.reset();
					this.pdfLayerViewer.reset();
					this.pdfHistory?.reset();
					this.findBar?.reset();
					this.toolbar.reset();
					this.secondaryToolbar.reset();
					this._PDFBug?.cleanup();
					await Promise.all(promises);
				},

				async open(file, args) {
					window.whiteboards = {};
					if (this.pdfLoadingTask) {
						await this.close();
					}

					const workerParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER);

					for (const key in workerParameters) {
						_pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key];
					}

					const parameters = Object.create(null);

					if (typeof file === 'string') {
						this.setTitleUsingUrl(file, file);
						parameters.url = file;
					} else if (file && 'byteLength' in file) {
						parameters.data = file;
					} else if (file.url && file.originalUrl) {
						this.setTitleUsingUrl(file.originalUrl, file.url);
						parameters.url = file.url;
					}

					const apiParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.API);

					for (const key in apiParameters) {
						let value = apiParameters[key];

						if (key === 'docBaseUrl' && !value) {
						}

						parameters[key] = value;
					}

					if (args) {
						for (const key in args) {
							parameters[key] = args[key];
						}
					}

					const loadingTask = (0, _pdfjsLib.getDocument)(parameters);
					this.pdfLoadingTask = loadingTask;

					loadingTask.onPassword = (updateCallback, reason) => {
						this.pdfLinkService.externalLinkEnabled = false;
						this.passwordPrompt.setUpdateCallback(updateCallback, reason);
						this.passwordPrompt.open();
					};

					loadingTask.onProgress = ({ loaded, total }) => {
						this.progress(loaded / total);
					};

					loadingTask.onUnsupportedFeature = this.fallback.bind(this);
					window.goto = 1;
					return loadingTask.promise.then(
						pdfDocument => {
							this.load(pdfDocument);
						},
						reason => {
							if (loadingTask !== this.pdfLoadingTask) {
								return undefined;
							}

							let key = 'loading_error';

							if (reason instanceof _pdfjsLib.InvalidPDFException) {
								key = 'invalid_file_error';
							} else if (reason instanceof _pdfjsLib.MissingPDFException) {
								key = 'missing_file_error';
							} else if (reason instanceof _pdfjsLib.UnexpectedResponseException) {
								key = 'unexpected_response_error';
							}

							return this.l10n.get(key).then(msg => {
								this._documentError(msg, {
									message: reason?.message
								});

								throw reason;
							});
						}
					);
				},

				fallback(featureId) {
					this.externalServices.reportTelemetry({
						type: 'unsupportedFeature',
						featureId
					});
				},

				_documentError(message, moreInfo = null) {
					this._unblockDocumentLoadEvent();

					this._otherError(message, moreInfo);

					this.eventBus.dispatch('documenterror', {
						source: this,
						message,
						reason: moreInfo?.message ?? null
					});
				},

				_otherError(message, moreInfo = null) {
					const moreInfoText = [
						this.l10n.get('error_version_info', {
							version: _pdfjsLib.version || '?',
							build: _pdfjsLib.build || '?'
						})
					];

					if (moreInfo) {
						moreInfoText.push(
							this.l10n.get('error_message', {
								message: moreInfo.message
							})
						);

						if (moreInfo.stack) {
							moreInfoText.push(
								this.l10n.get('error_stack', {
									stack: moreInfo.stack
								})
							);
						} else {
							if (moreInfo.filename) {
								moreInfoText.push(
									this.l10n.get('error_file', {
										file: moreInfo.filename
									})
								);
							}

							if (moreInfo.lineNumber) {
								moreInfoText.push(
									this.l10n.get('error_line', {
										line: moreInfo.lineNumber
									})
								);
							}
						}
					}

					const errorWrapperConfig = this.appConfig.errorWrapper;
					const errorWrapper = errorWrapperConfig.container;
					errorWrapper.hidden = false;
					const errorMessage = errorWrapperConfig.errorMessage;
					errorMessage.textContent = message;
					const closeButton = errorWrapperConfig.closeButton;

					closeButton.onclick = function () {
						errorWrapper.hidden = true;
					};

					const errorMoreInfo = errorWrapperConfig.errorMoreInfo;
					const moreInfoButton = errorWrapperConfig.moreInfoButton;
					const lessInfoButton = errorWrapperConfig.lessInfoButton;

					moreInfoButton.onclick = function () {
						errorMoreInfo.hidden = false;
						moreInfoButton.hidden = true;
						lessInfoButton.hidden = false;
						errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px';
					};

					lessInfoButton.onclick = function () {
						errorMoreInfo.hidden = true;
						moreInfoButton.hidden = false;
						lessInfoButton.hidden = true;
					};

					moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;
					lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;
					closeButton.oncontextmenu = _ui_utils.noContextMenuHandler;
					moreInfoButton.hidden = false;
					lessInfoButton.hidden = true;
					Promise.all(moreInfoText).then(parts => {
						errorMoreInfo.value = parts.join('\n');
					});
				},

				progress(level) {
					const percent = Math.round(level * 100);

					if (percent > this.loadingBar.percent || isNaN(percent)) {
						this.loadingBar.percent = percent;
						const disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams.disableAutoFetch : _app_options.AppOptions.get('disableAutoFetch');

						if (disableAutoFetch && percent) {
							if (this.disableAutoFetchLoadingBarTimeout) {
								clearTimeout(this.disableAutoFetchLoadingBarTimeout);
								this.disableAutoFetchLoadingBarTimeout = null;
							}

							this.loadingBar.show();
							this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {
								this.loadingBar.hide();
								this.disableAutoFetchLoadingBarTimeout = null;
							}, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);
						}
					}
				},

				load(pdfDocument) {
					this.pdfDocument = pdfDocument;
					const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {});
					const pageModePromise = pdfDocument.getPageMode().catch(function () {});
					const openActionPromise = pdfDocument.getOpenAction().catch(function () {});
					this.toolbar.setPagesCount(pdfDocument.numPages, false);
					this.secondaryToolbar.setPagesCount(pdfDocument.numPages);
					let baseDocumentUrl;
					baseDocumentUrl = null;
					this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);
					const pdfViewer = this.pdfViewer;
					pdfViewer.setDocument(pdfDocument);
					const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;
					const pdfThumbnailViewer = this.pdfThumbnailViewer;
					pdfThumbnailViewer.setDocument(pdfDocument);
					const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0]))
						.getMultiple({
							page: null,
							zoom: _ui_utils.DEFAULT_SCALE_VALUE,
							scrollLeft: '0',
							scrollTop: '0',
							rotation: null,
							sidebarView: _ui_utils.SidebarView.UNKNOWN,
							scrollMode: _ui_utils.ScrollMode.UNKNOWN,
							spreadMode: _ui_utils.SpreadMode.UNKNOWN
						})
						.catch(() => {
							return Object.create(null);
						});
					firstPagePromise.then(pdfPage => {
						this.loadingBar.setWidth(this.appConfig.viewerContainer);

						this._initializeAnnotationStorageCallbacks(pdfDocument);

						Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise])
							.then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {
								const viewOnLoad = _app_options.AppOptions.get('viewOnLoad');

								this._initializePdfHistory({
									fingerprint: pdfDocument.fingerprints[0],
									viewOnLoad,
									initialDest: openAction?.dest
								});

								const initialBookmark = this.initialBookmark;

								const zoom = _app_options.AppOptions.get('defaultZoomValue');

								let hash = zoom ? `zoom=${zoom}` : null;
								let rotation = null;

								let sidebarView = _app_options.AppOptions.get('sidebarViewOnLoad');

								let scrollMode = _app_options.AppOptions.get('scrollModeOnLoad');

								let spreadMode = _app_options.AppOptions.get('spreadModeOnLoad');

								if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) {
									stored.page = window.goto;
									window.notifyPageChange(stored.page);
									hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`;
									rotation = parseInt(stored.rotation, 10);

									if (sidebarView === _ui_utils.SidebarView.UNKNOWN) {
										sidebarView = stored.sidebarView | 0;
									}

									if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) {
										scrollMode = stored.scrollMode | 0;
									}

									if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) {
										spreadMode = stored.spreadMode | 0;
									}
								}

								if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) {
									sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode);
								}

								if (pageLayout && scrollMode === _ui_utils.ScrollMode.UNKNOWN && spreadMode === _ui_utils.SpreadMode.UNKNOWN) {
									const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(pageLayout);
									spreadMode = modes.spreadMode;
								}

								this.setInitialView(hash, {
									rotation,
									sidebarView,
									scrollMode,
									spreadMode
								});
								this.eventBus.dispatch('documentinit', {
									source: this
								});

								if (!this.isViewerEmbedded) {
									pdfViewer.focus();
								}

								await Promise.race([
									pagesPromise,
									new Promise(resolve => {
										setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);
									})
								]);

								if (!initialBookmark && !hash) {
									return;
								}

								if (pdfViewer.hasEqualPageSizes) {
									return;
								}

								this.initialBookmark = initialBookmark;
								pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;
								this.setInitialView(hash);
							})
							.catch(() => {
								this.setInitialView();
							})
							.then(function () {
								pdfViewer.update();
							});
					});
					pagesPromise.then(
						() => {
							this._unblockDocumentLoadEvent();
						},
						reason => {
							this.l10n.get('loading_error').then(msg => {
								this._documentError(msg, {
									message: reason?.message
								});
							});
						}
					);
					onePageRendered.then(data => {
						this.externalServices.reportTelemetry({
							type: 'pageInfo',
							timestamp: data.timestamp
						});
						pdfDocument.getOutline().then(outline => {
							if (pdfDocument !== this.pdfDocument) {
								return;
							}

							this.pdfOutlineViewer.render({
								outline,
								pdfDocument
							});
						});
						pdfDocument.getAttachments().then(attachments => {
							if (pdfDocument !== this.pdfDocument) {
								return;
							}

							this.pdfAttachmentViewer.render({
								attachments
							});
						});
						pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {
							if (pdfDocument !== this.pdfDocument) {
								return;
							}

							this.pdfLayerViewer.render({
								optionalContentConfig,
								pdfDocument
							});
						});

						if ('requestIdleCallback' in window) {
							const callback = window.requestIdleCallback(
								() => {
									this._collectTelemetry(pdfDocument);

									this._idleCallbacks.delete(callback);
								},
								{
									timeout: 1000
								}
							);

							this._idleCallbacks.add(callback);
						}
					});

					this._initializePageLabels(pdfDocument);

					this._initializeMetadata(pdfDocument);
				},

				async _collectTelemetry(pdfDocument) {
					const markInfo = await this.pdfDocument.getMarkInfo();

					if (pdfDocument !== this.pdfDocument) {
						return;
					}

					const tagged = markInfo?.Marked || false;
					this.externalServices.reportTelemetry({
						type: 'tagged',
						tagged
					});
				},

				async _initializeMetadata(pdfDocument) {
					const { info, metadata, contentDispositionFilename, contentLength } = await pdfDocument.getMetadata();

					if (pdfDocument !== this.pdfDocument) {
						return;
					}

					this.documentInfo = info;
					this.metadata = metadata;
					this._contentDispositionFilename ??= contentDispositionFilename;
					this._contentLength ??= contentLength;
					console.log(
						`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +
							`${(info.Producer || '-').trim()} / ${(info.Creator || '-').trim()}] ` +
							`(PDF.js: ${_pdfjsLib.version || '-'})`
					);
					let pdfTitle = info?.Title;
					const metadataTitle = metadata?.get('dc:title');

					if (metadataTitle) {
						if (metadataTitle !== 'Untitled' && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) {
							pdfTitle = metadataTitle;
						}
					}

					if (pdfTitle) {
						this.setTitle(`${pdfTitle} - ${contentDispositionFilename || document.title}`);
					} else if (contentDispositionFilename) {
						this.setTitle(contentDispositionFilename);
					}

					if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) {
						if (pdfDocument.loadingParams.enableXfa) {
							console.warn('Warning: XFA Foreground documents are not supported');
						} else {
							console.warn('Warning: XFA support is not enabled');
						}

						this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
					} else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) {
						console.warn('Warning: Interactive form support is not enabled');
						this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
					}

					if (info.IsSignaturesPresent) {
						console.warn('Warning: Digital signatures validation is not supported');
						this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.signatures);
					}

					let versionId = 'other';

					if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {
						versionId = `v${info.PDFFormatVersion.replace('.', '_')}`;
					}

					let generatorId = 'other';

					if (info.Producer) {
						const producer = info.Producer.toLowerCase();
						KNOWN_GENERATORS.some(function (generator) {
							if (!producer.includes(generator)) {
								return false;
							}

							generatorId = generator.replace(/[ .-]/g, '_');
							return true;
						});
					}

					let formType = null;

					if (info.IsXFAPresent) {
						formType = 'xfa';
					} else if (info.IsAcroFormPresent) {
						formType = 'acroform';
					}

					this.externalServices.reportTelemetry({
						type: 'documentInfo',
						version: versionId,
						generator: generatorId,
						formType
					});
					this.eventBus.dispatch('metadataloaded', {
						source: this
					});
				},

				forceRendering() {
					this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible;
					this.pdfRenderingQueue.renderHighestPriority();
				},

				async _initializePageLabels(pdfDocument) {
					const labels = await pdfDocument.getPageLabels();

					if (pdfDocument !== this.pdfDocument) {
						return;
					}

					if (!labels || _app_options.AppOptions.get('disablePageLabels')) {
						return;
					}

					const numLabels = labels.length;
					let standardLabels = 0,
						emptyLabels = 0;

					for (let i = 0; i < numLabels; i++) {
						const label = labels[i];

						if (label === (i + 1).toString()) {
							standardLabels++;
						} else if (label === '') {
							emptyLabels++;
						} else {
							break;
						}
					}

					if (standardLabels >= numLabels || emptyLabels >= numLabels) {
						return;
					}

					const { pdfViewer, pdfThumbnailViewer, toolbar } = this;
					pdfViewer.setPageLabels(labels);
					pdfThumbnailViewer.setPageLabels(labels);
					toolbar.setPagesCount(numLabels, true);
					toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
				},

				_initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {
					if (!this.pdfHistory) {
						return;
					}

					this.pdfHistory.initialize({
						fingerprint,
						resetHistory: viewOnLoad === ViewOnLoad.INITIAL,
						updateUrl: _app_options.AppOptions.get('historyUpdateUrl')
					});

					if (this.pdfHistory.initialBookmark) {
						this.initialBookmark = this.pdfHistory.initialBookmark;
						this.initialRotation = this.pdfHistory.initialRotation;
					}

					if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) {
						this.initialBookmark = JSON.stringify(initialDest);
						this.pdfHistory.push({
							explicitDest: initialDest,
							pageNumber: null
						});
					}
				},

				_initializeAnnotationStorageCallbacks(pdfDocument) {
					if (pdfDocument !== this.pdfDocument) {
						return;
					}

					const { annotationStorage } = pdfDocument;

					annotationStorage.onSetModified = () => {
						window.addEventListener('beforeunload', beforeUnload);
						this._annotationStorageModified = true;
					};

					annotationStorage.onResetModified = () => {
						window.removeEventListener('beforeunload', beforeUnload);
						delete this._annotationStorageModified;
					};
				},

				setInitialView(storedHash, { rotation, sidebarView, scrollMode, spreadMode } = {}) {
					const setRotation = angle => {
						if ((0, _ui_utils.isValidRotation)(angle)) {
							this.pdfViewer.pagesRotation = angle;
						}
					};

					const setViewerModes = (scroll, spread) => {
						if ((0, _ui_utils.isValidScrollMode)(scroll)) {
							this.pdfViewer.scrollMode = scroll;
						}

						if ((0, _ui_utils.isValidSpreadMode)(spread)) {
							this.pdfViewer.spreadMode = spread;
						}
					};

					this.isInitialViewSet = true;
					this.pdfSidebar.setInitialView(sidebarView);
					setViewerModes(scrollMode, spreadMode);

					if (this.initialBookmark) {
						setRotation(this.initialRotation);
						delete this.initialRotation;
						this.pdfLinkService.setHash(this.initialBookmark);
						this.initialBookmark = null;
					} else if (storedHash) {
						setRotation(rotation);
						this.pdfLinkService.setHash(storedHash);
					}

					this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel);
					this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);

					if (!this.pdfViewer.currentScaleValue) {
						this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
					}
				},

				_cleanup() {
					if (!this.pdfDocument) {
						return;
					}

					this.pdfViewer.cleanup();
					this.pdfThumbnailViewer.cleanup();
					this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG);
				},

				rotatePages(delta) {
					this.pdfViewer.pagesRotation += delta;
				},

				requestPresentationMode() {
					this.pdfPresentationMode?.request();
				},

				bindEvents() {
					const { eventBus, _boundEvents } = this;

					eventBus._on('resize', webViewerResize);

					eventBus._on('hashchange', webViewerHashchange);

					eventBus._on('pagerendered', webViewerPageRendered);

					eventBus._on('updateviewarea', webViewerUpdateViewarea);

					eventBus._on('pagechanging', webViewerPageChanging);

					eventBus._on('scalechanging', webViewerScaleChanging);

					eventBus._on('rotationchanging', webViewerRotationChanging);

					eventBus._on('sidebarviewchanged', webViewerSidebarViewChanged);

					eventBus._on('pagemode', webViewerPageMode);

					eventBus._on('namedaction', webViewerNamedAction);

					eventBus._on('presentationmodechanged', webViewerPresentationModeChanged);

					eventBus._on('presentationmode', webViewerPresentationMode);

					eventBus._on('firstpage', webViewerFirstPage);

					eventBus._on('lastpage', webViewerLastPage);

					eventBus._on('nextpage', webViewerNextPage);

					eventBus._on('previouspage', webViewerPreviousPage);

					eventBus._on('zoomin', webViewerZoomIn);

					eventBus._on('zoomout', webViewerZoomOut);

					eventBus._on('zoomreset', webViewerZoomReset);

					eventBus._on('pagenumberchanged', webViewerPageNumberChanged);

					eventBus._on('scalechanged', webViewerScaleChanged);

					eventBus._on('optionalcontentconfig', webViewerOptionalContentConfig);

					eventBus._on('findfromurlhash', webViewerFindFromUrlHash);

					eventBus._on('updatefindmatchescount', webViewerUpdateFindMatchesCount);

					eventBus._on('updatefindcontrolstate', webViewerUpdateFindControlState);

					if (_app_options.AppOptions.get('pdfBug')) {
						_boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;

						eventBus._on('pagerendered', _boundEvents.reportPageStatsPDFBug);

						eventBus._on('pagechanging', _boundEvents.reportPageStatsPDFBug);
					}

					eventBus._on('fileinputchange', webViewerFileInputChange);

					eventBus._on('openfile', webViewerOpenFile);
				},

				bindWindowEvents() {
					const { eventBus, _boundEvents } = this;

					_boundEvents.windowResize = () => {
						eventBus.dispatch('resize', {
							source: window
						});
					};

					_boundEvents.windowHashChange = () => {
						eventBus.dispatch('hashchange', {
							source: window,
							hash: document.location.hash.substring(1)
						});
					};

					_boundEvents.windowUpdateFromSandbox = event => {
						eventBus.dispatch('updatefromsandbox', {
							source: window,
							detail: event.detail
						});
					};

					window.addEventListener('visibilitychange', webViewerVisibilityChange);
					window.addEventListener('wheel', webViewerWheel, {
						passive: false
					});
					window.addEventListener('touchstart', webViewerTouchStart, {
						passive: false
					});
					window.addEventListener('click', webViewerClick);
					window.addEventListener('keydown', webViewerKeyDown);
					window.addEventListener('resize', _boundEvents.windowResize);
					window.addEventListener('hashchange', _boundEvents.windowHashChange);
					window.addEventListener('updatefromsandbox', _boundEvents.windowUpdateFromSandbox);
				},

				unbindEvents() {
					const { eventBus, _boundEvents } = this;

					eventBus._off('resize', webViewerResize);

					eventBus._off('hashchange', webViewerHashchange);

					eventBus._off('pagerendered', webViewerPageRendered);

					eventBus._off('updateviewarea', webViewerUpdateViewarea);

					eventBus._off('pagechanging', webViewerPageChanging);

					eventBus._off('scalechanging', webViewerScaleChanging);

					eventBus._off('rotationchanging', webViewerRotationChanging);

					eventBus._off('sidebarviewchanged', webViewerSidebarViewChanged);

					eventBus._off('pagemode', webViewerPageMode);

					eventBus._off('namedaction', webViewerNamedAction);

					eventBus._off('presentationmodechanged', webViewerPresentationModeChanged);

					eventBus._off('presentationmode', webViewerPresentationMode);

					eventBus._off('firstpage', webViewerFirstPage);

					eventBus._off('lastpage', webViewerLastPage);

					eventBus._off('nextpage', webViewerNextPage);

					eventBus._off('previouspage', webViewerPreviousPage);

					eventBus._off('zoomin', webViewerZoomIn);

					eventBus._off('zoomout', webViewerZoomOut);

					eventBus._off('zoomreset', webViewerZoomReset);

					eventBus._off('pagenumberchanged', webViewerPageNumberChanged);

					eventBus._off('scalechanged', webViewerScaleChanged);

					eventBus._off('optionalcontentconfig', webViewerOptionalContentConfig);

					eventBus._off('findfromurlhash', webViewerFindFromUrlHash);

					eventBus._off('updatefindmatchescount', webViewerUpdateFindMatchesCount);

					eventBus._off('updatefindcontrolstate', webViewerUpdateFindControlState);

					if (_boundEvents.reportPageStatsPDFBug) {
						eventBus._off('pagerendered', _boundEvents.reportPageStatsPDFBug);

						eventBus._off('pagechanging', _boundEvents.reportPageStatsPDFBug);

						_boundEvents.reportPageStatsPDFBug = null;
					}

					eventBus._off('fileinputchange', webViewerFileInputChange);

					eventBus._off('openfile', webViewerOpenFile);
				},

				unbindWindowEvents() {
					const { _boundEvents } = this;
					window.removeEventListener('visibilitychange', webViewerVisibilityChange);
					window.removeEventListener('wheel', webViewerWheel, {
						passive: false
					});
					window.removeEventListener('touchstart', webViewerTouchStart, {
						passive: false
					});
					window.removeEventListener('click', webViewerClick);
					window.removeEventListener('keydown', webViewerKeyDown);
					window.removeEventListener('resize', _boundEvents.windowResize);
					window.removeEventListener('hashchange', _boundEvents.windowHashChange);
					window.removeEventListener('updatefromsandbox', _boundEvents.windowUpdateFromSandbox);
					_boundEvents.windowResize = null;
					_boundEvents.windowHashChange = null;
					_boundEvents.windowUpdateFromSandbox = null;
				},

				accumulateWheelTicks(ticks) {
					if ((this._wheelUnusedTicks > 0 && ticks < 0) || (this._wheelUnusedTicks < 0 && ticks > 0)) {
						this._wheelUnusedTicks = 0;
					}

					this._wheelUnusedTicks += ticks;
					const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks));
					this._wheelUnusedTicks -= wholeTicks;
					return wholeTicks;
				},

				_unblockDocumentLoadEvent() {
					document.blockUnblockOnload?.(false);

					this._unblockDocumentLoadEvent = () => {};
				},

				_reportDocumentStatsTelemetry() {
					const { stats } = this.pdfDocument;

					if (stats !== this._docStats) {
						this._docStats = stats;
						this.externalServices.reportTelemetry({
							type: 'documentStats',
							stats
						});
					}
				},

				get scriptingReady() {
					return this.pdfScriptingManager.ready;
				}
			};
			exports.PDFViewerApplication = PDFViewerApplication;
			let validateFileURL;
			{
				const HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];

				validateFileURL = function (file) {
					if (!file) {
						return;
					}

					try {
						const viewerOrigin = new URL(window.location.href).origin || 'null';

						if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {
							return;
						}

						const fileOrigin = new URL(file, window.location.href).origin;
						// 不需要判别来源
						// if (fileOrigin !== viewerOrigin) {
						//   throw new Error("file origin does not match viewer's");
						// }
						return;
					} catch (ex) {
						PDFViewerApplication.l10n.get('loading_error').then(msg => {
							PDFViewerApplication._documentError(msg, {
								message: ex?.message
							});
						});
						throw ex;
					}
				};
			}

			async function loadFakeWorker() {
				_pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get('workerSrc');
				await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc);
			}

			async function loadPDFBug(self) {
				const { debuggerScriptPath } = self.appConfig;
				const { PDFBug } = await import(debuggerScriptPath);
				self._PDFBug = PDFBug;
			}

			function reportPageStatsPDFBug({ pageNumber }) {
				if (!globalThis.Stats?.enabled) {
					return;
				}

				const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
				globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats);
			}

			function webViewerInitialized() {
				const { appConfig, eventBus } = PDFViewerApplication;
				let file;
				const queryString = document.location.search.substring(1);
				const params = (0, _ui_utils.parseQueryString)(queryString);
				file = params.get('file') ?? _app_options.AppOptions.get('defaultUrl');
				validateFileURL(file);
				const fileInput = appConfig.openFileInput;
				fileInput.value = null;
				fileInput.addEventListener('change', function (evt) {
					const { files } = evt.target;

					if (!files || files.length === 0) {
						return;
					}

					eventBus.dispatch('fileinputchange', {
						source: this,
						fileInput: evt.target
					});
				});
				appConfig.mainContainer.addEventListener('dragover', function (evt) {
					evt.preventDefault();
					evt.dataTransfer.dropEffect = 'move';
				});
				appConfig.mainContainer.addEventListener('drop', function (evt) {
					evt.preventDefault();
					const { files } = evt.dataTransfer;

					if (!files || files.length === 0) {
						return;
					}

					eventBus.dispatch('fileinputchange', {
						source: this,
						fileInput: evt.dataTransfer
					});
				});

				if (!PDFViewerApplication.supportsDocumentFonts) {
					_app_options.AppOptions.set('disableFontFace', true);

					PDFViewerApplication.l10n.get('web_fonts_disabled').then(msg => {
						console.warn(msg);
					});
				}

				if (!PDFViewerApplication.supportsFullscreen) {
					appConfig.toolbar.presentationModeButton.classList.add('hidden');
					appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden');
				}

				if (PDFViewerApplication.supportsIntegratedFind) {
					appConfig.toolbar.viewFind.classList.add('hidden');
				}

				appConfig.mainContainer.addEventListener(
					'transitionend',
					function (evt) {
						if (evt.target === this) {
							eventBus.dispatch('resize', {
								source: this
							});
						}
					},
					true
				);

				try {
					if (file) {
						PDFViewerApplication.open(file);
					} else {
						PDFViewerApplication._hideViewBookmark();
					}
				} catch (reason) {
					PDFViewerApplication.l10n.get('loading_error').then(msg => {
						PDFViewerApplication._documentError(msg, reason);
					});
				}
			}

			function webViewerPageRendered({ pageNumber, error }) {
				if (pageNumber === PDFViewerApplication.page) {
					PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);
				}

				if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
					const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
					const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1);

					if (pageView && thumbnailView) {
						thumbnailView.setImage(pageView);
					}
				}

				if (error) {
					PDFViewerApplication.l10n.get('rendering_error').then(msg => {
						PDFViewerApplication._otherError(msg, error);
					});
				}

				PDFViewerApplication._reportDocumentStatsTelemetry();
			}

			function webViewerPageMode({ mode }) {
				let view;

				switch (mode) {
					case 'thumbs':
						view = _ui_utils.SidebarView.THUMBS;
						break;

					case 'bookmarks':
					case 'outline':
						view = _ui_utils.SidebarView.OUTLINE;
						break;

					case 'attachments':
						view = _ui_utils.SidebarView.ATTACHMENTS;
						break;

					case 'layers':
						view = _ui_utils.SidebarView.LAYERS;
						break;

					case 'none':
						view = _ui_utils.SidebarView.NONE;
						break;

					default:
						console.error('Invalid "pagemode" hash parameter: ' + mode);
						return;
				}

				PDFViewerApplication.pdfSidebar.switchView(view, true);
			}

			function webViewerNamedAction(evt) {
				switch (evt.action) {
					case 'GoToPage':
						PDFViewerApplication.appConfig.toolbar.pageNumber.select();
						break;

					case 'Find':
						if (!PDFViewerApplication.supportsIntegratedFind) {
							PDFViewerApplication.findBar.toggle();
						}

						break;
				}
			}

			function webViewerPresentationModeChanged(evt) {
				PDFViewerApplication.pdfViewer.presentationModeState = evt.state;
			}

			function webViewerSidebarViewChanged(evt) {
				PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;

				if (PDFViewerApplication.isInitialViewSet) {
					PDFViewerApplication.store?.set('sidebarView', evt.view).catch(() => {});
				}
			}

			function webViewerUpdateViewarea(evt) {
				const location = evt.location;

				if (PDFViewerApplication.isInitialViewSet) {
					PDFViewerApplication.store
						?.setMultiple({
							page: location.pageNumber,
							zoom: location.scale,
							scrollLeft: location.left,
							scrollTop: location.top,
							rotation: location.rotation
						})
						.catch(() => {});
				}

				const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);
				PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;
				PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;
				const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);
				const loading = currentPage?.renderingState !== _ui_utils.RenderingStates.FINISHED;
				PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
			}

			function webViewerScrollModeChanged(evt) {
				if (PDFViewerApplication.isInitialViewSet) {
					PDFViewerApplication.store?.set('scrollMode', evt.mode).catch(() => {});
				}
			}

			function webViewerSpreadModeChanged(evt) {
				if (PDFViewerApplication.isInitialViewSet) {
					PDFViewerApplication.store?.set('spreadMode', evt.mode).catch(() => {});
				}
			}

			function webViewerResize() {
				const { pdfDocument, pdfViewer } = PDFViewerApplication;
				pdfViewer.updateContainerHeightCss();

				if (!pdfDocument) {
					return;
				}

				const currentScaleValue = pdfViewer.currentScaleValue;

				if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') {
					pdfViewer.currentScaleValue = currentScaleValue;
				}

				pdfViewer.update();
			}

			function webViewerHashchange(evt) {
				const hash = evt.hash;

				if (!hash) {
					return;
				}

				if (!PDFViewerApplication.isInitialViewSet) {
					PDFViewerApplication.initialBookmark = hash;
				} else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {
					PDFViewerApplication.pdfLinkService.setHash(hash);
				}
			}

			{
				var webViewerFileInputChange = async function (evt) {
					if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {
						return;
					}

					const file = evt.fileInput.files[0];
					let url = URL.createObjectURL(file);

					if (file.name) {
						url = {
							url,
							originalUrl: file.name
						};
					}
					let formData = new FormData();
					formData.append('file', file);
					const config = {
						method: 'POST',
						body: formData,
						headers: {
							// 'Content-Type': 'multipart/form-data',
							'x-access-token': uploadToken
						}
					};
					console.log('upload config', config);
					const req = new Request(uploadUrl, config);
					const res = await fetch(req);
					const uploadResult = await res.json();
					const data = uploadResult.data;
					console.log('upload result', uploadResult, data);
					if (data && data.url && data.url.indexOf('http://') != -1) {
						data.url = data.url.replace('http://', 'https://');
					}
					let update = {
						action: 'open',
						url: data.url,
						id: '*',
						renew: true
					};
					window.notifyUpdate(update);
					PDFViewerApplication.open(data.url);
				};

				var webViewerOpenFile = function (evt) {
					const fileInput = PDFViewerApplication.appConfig.openFileInput;
					fileInput.click();
				};
			}

			function webViewerPresentationMode() {
				PDFViewerApplication.requestPresentationMode();
			}

			function webViewerFirstPage() {
				if (PDFViewerApplication.pdfDocument) {
					window.notifyPageChange(1);
					PDFViewerApplication.page = 1;
				}
			}

			function webViewerLastPage() {
				if (PDFViewerApplication.pdfDocument) {
					window.notifyPageChange(PDFViewerApplication.pagesCount);
					PDFViewerApplication.page = PDFViewerApplication.pagesCount;
				}
			}

			function webViewerNextPage() {
				window.notifyPageChange(PDFViewerApplication.page + 1);
				PDFViewerApplication.pdfViewer.nextPage();
			}

			function webViewerPreviousPage() {
				window.notifyPageChange(PDFViewerApplication.page - 1);
				PDFViewerApplication.pdfViewer.previousPage();
			}

			function webViewerZoomIn() {
				PDFViewerApplication.zoomIn();
			}

			function webViewerZoomOut() {
				PDFViewerApplication.zoomOut();
			}

			function webViewerZoomReset() {
				PDFViewerApplication.zoomReset();
			}

			PDFViewerApplication.goToPageNumer = number => {
				const pdfViewer = PDFViewerApplication.pdfViewer;
				if (number !== '') {
					PDFViewerApplication.pdfLinkService.goToPage(number);
				}

				if (number !== pdfViewer.currentPageNumber.toString() && number !== pdfViewer.currentPageLabel) {
					PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
				}
			};

			function webViewerPageNumberChanged(evt) {
				PDFViewerApplication.goToPageNumer(evt.value);
				window.notifyPageChange(evt.value);
			}

			function webViewerScaleChanged(evt) {
				PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;
			}

			function webViewerOptionalContentConfig(evt) {
				PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;
			}

			function webViewerFindFromUrlHash(evt) {
				PDFViewerApplication.eventBus.dispatch('find', {
					source: evt.source,
					type: '',
					query: evt.query,
					phraseSearch: evt.phraseSearch,
					caseSensitive: false,
					entireWord: false,
					highlightAll: true,
					findPrevious: false,
					matchDiacritics: true
				});
			}

			function webViewerUpdateFindMatchesCount({ matchesCount }) {
				if (PDFViewerApplication.supportsIntegratedFind) {
					PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);
				} else {
					PDFViewerApplication.findBar.updateResultsCount(matchesCount);
				}
			}

			function webViewerUpdateFindControlState({ state, previous, matchesCount, rawQuery }) {
				if (PDFViewerApplication.supportsIntegratedFind) {
					PDFViewerApplication.externalServices.updateFindControlState({
						result: state,
						findPrevious: previous,
						matchesCount,
						rawQuery
					});
				} else {
					PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);
				}
			}

			function webViewerScaleChanging(evt) {
				PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);
				PDFViewerApplication.pdfViewer.update();
			}

			function webViewerRotationChanging(evt) {
				PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;
				PDFViewerApplication.forceRendering();
				PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
			}

			function webViewerPageChanging({ pageNumber, pageLabel }) {
				PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);
				PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);

				if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
					PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);
				}
			}

			function webViewerVisibilityChange(evt) {
				if (document.visibilityState === 'visible') {
					setZoomDisabledTimeout();
				}
			}

			let zoomDisabledTimeout = null;

			function setZoomDisabledTimeout() {
				if (zoomDisabledTimeout) {
					clearTimeout(zoomDisabledTimeout);
				}

				zoomDisabledTimeout = setTimeout(function () {
					zoomDisabledTimeout = null;
				}, WHEEL_ZOOM_DISABLED_TIMEOUT);
			}

			function webViewerWheel(evt) {
				const { pdfViewer, supportedMouseWheelZoomModifierKeys } = PDFViewerApplication;

				if (pdfViewer.isInPresentationMode) {
					return;
				}

				if ((evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey) || (evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey)) {
					evt.preventDefault();

					if (zoomDisabledTimeout || document.visibilityState === 'hidden') {
						return;
					}

					const deltaMode = evt.deltaMode;
					const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt);
					const previousScale = pdfViewer.currentScale;
					let ticks = 0;

					if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) {
						if (Math.abs(delta) >= 1) {
							ticks = Math.sign(delta);
						} else {
							ticks = PDFViewerApplication.accumulateWheelTicks(delta);
						}
					} else {
						const PIXELS_PER_LINE_SCALE = 30;
						ticks = PDFViewerApplication.accumulateWheelTicks(delta / PIXELS_PER_LINE_SCALE);
					}

					if (ticks < 0) {
						PDFViewerApplication.zoomOut(-ticks);
					} else if (ticks > 0) {
						PDFViewerApplication.zoomIn(ticks);
					}

					const currentScale = pdfViewer.currentScale;

					if (previousScale !== currentScale) {
						const scaleCorrectionFactor = currentScale / previousScale - 1;
						const rect = pdfViewer.container.getBoundingClientRect();
						const dx = evt.clientX - rect.left;
						const dy = evt.clientY - rect.top;
						pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;
						pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;
					}
				} else {
					setZoomDisabledTimeout();
				}
			}

			function webViewerTouchStart(evt) {
				if (evt.touches.length > 1) {
					evt.preventDefault();
				}
			}

			function webViewerClick(evt) {
				if (!PDFViewerApplication.secondaryToolbar.isOpen) {
					return;
				}

				const appConfig = PDFViewerApplication.appConfig;

				if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || (appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton)) {
					PDFViewerApplication.secondaryToolbar.close();
				}
			}

			function webViewerKeyDown(evt) {
				if (PDFViewerApplication.overlayManager.active) {
					return;
				}

				const { eventBus, pdfViewer } = PDFViewerApplication;
				const isViewerInPresentationMode = pdfViewer.isInPresentationMode;
				let handled = false,
					ensureViewerFocused = false;
				const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0);

				if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
					switch (evt.keyCode) {
						case 70:
							if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {
								PDFViewerApplication.findBar.open();
								handled = true;
							}

							break;

						case 71:
							if (!PDFViewerApplication.supportsIntegratedFind) {
								const { state } = PDFViewerApplication.findController;

								if (state) {
									const eventState = Object.assign(Object.create(null), state, {
										source: window,
										type: 'again',
										findPrevious: cmd === 5 || cmd === 12
									});
									eventBus.dispatch('find', eventState);
								}

								handled = true;
							}

							break;

						case 61:
						case 107:
						case 187:
						case 171:
							if (!isViewerInPresentationMode) {
								PDFViewerApplication.zoomIn();
							}

							handled = true;
							break;

						case 173:
						case 109:
						case 189:
							if (!isViewerInPresentationMode) {
								PDFViewerApplication.zoomOut();
							}

							handled = true;
							break;

						case 48:
						case 96:
							if (!isViewerInPresentationMode) {
								setTimeout(function () {
									PDFViewerApplication.zoomReset();
								});
								handled = false;
							}

							break;

						case 38:
							if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
								PDFViewerApplication.page = 1;
								handled = true;
								ensureViewerFocused = true;
							}

							break;

						case 40:
							if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
								PDFViewerApplication.page = PDFViewerApplication.pagesCount;
								handled = true;
								ensureViewerFocused = true;
							}

							break;
					}
				}

				if (cmd === 1 || cmd === 8) {
					switch (evt.keyCode) {
						case 79:
							{
								eventBus.dispatch('openfile', {
									source: window
								});
								handled = true;
							}
							break;
					}
				}

				if (cmd === 3 || cmd === 10) {
					switch (evt.keyCode) {
						case 80:
							PDFViewerApplication.requestPresentationMode();
							handled = true;
							break;

						case 71:
							PDFViewerApplication.appConfig.toolbar.pageNumber.select();
							handled = true;
							break;
					}
				}

				if (handled) {
					if (ensureViewerFocused && !isViewerInPresentationMode) {
						pdfViewer.focus();
					}

					evt.preventDefault();
					return;
				}

				const curElement = (0, _ui_utils.getActiveOrFocusedElement)();
				const curElementTagName = curElement?.tagName.toUpperCase();

				if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT' || curElement?.isContentEditable) {
					if (evt.keyCode !== 27) {
						return;
					}
				}

				if (cmd === 0) {
					let turnPage = 0,
						turnOnlyIfPageFit = false;

					switch (evt.keyCode) {
						case 38:
						case 33:
							turnPage = -1;
							break;

						case 8:
							if (!isViewerInPresentationMode) {
								turnOnlyIfPageFit = true;
							}

							turnPage = -1;
							break;

						case 37:
						case 75:
						case 80:
							turnPage = -1;
							break;

						case 27:
							if (PDFViewerApplication.secondaryToolbar.isOpen) {
								PDFViewerApplication.secondaryToolbar.close();
								handled = true;
							}

							if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) {
								PDFViewerApplication.findBar.close();
								handled = true;
							}

							break;

						case 40:
						case 34:
							turnPage = 1;
							break;

						case 13:
						case 32:
							if (!isViewerInPresentationMode) {
								turnOnlyIfPageFit = true;
							}

							turnPage = 1;
							break;

						case 39:
						case 74:
						case 78:
							turnPage = 1;
							break;

						case 36:
							if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
								PDFViewerApplication.page = 1;
								window.notifyPageChange(1);
								handled = true;
								ensureViewerFocused = true;
							}

							break;

						case 35:
							if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
								PDFViewerApplication.page = PDFViewerApplication.pagesCount;
								window.notifyPageChange(PDFViewerApplication.page);
								handled = true;
								ensureViewerFocused = true;
							}

							break;

						case 83:
							PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT);
							break;

						case 72:
							PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND);
							break;

						case 115:
							PDFViewerApplication.pdfSidebar.toggle();
							break;
					}

					if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === 'page-fit')) {
						if (turnPage > 0) {
							window.notifyPageChange(PDFViewerApplication.page + 1);
							pdfViewer.nextPage();
						} else {
							window.notifyPageChange(PDFViewerApplication.page - 1);
							pdfViewer.previousPage();
						}

						handled = true;
					}
				}

				if (cmd === 4) {
					switch (evt.keyCode) {
						case 13:
						case 32:
							if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') {
								break;
							}

							pdfViewer.previousPage();
							handled = true;
							break;
					}
				}

				if (!handled && !isViewerInPresentationMode) {
					if ((evt.keyCode >= 33 && evt.keyCode <= 40) || (evt.keyCode === 32 && curElementTagName !== 'BUTTON')) {
						ensureViewerFocused = true;
					}
				}

				if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {
					pdfViewer.focus();
				}

				if (handled) {
					evt.preventDefault();
				}
			}

			function beforeUnload(evt) {
				evt.preventDefault();
				evt.returnValue = '';
				return false;
			}

			/***/
		},
		/* 3 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.animationStarted =
				exports.VERTICAL_PADDING =
				exports.UNKNOWN_SCALE =
				exports.TextLayerMode =
				exports.SpreadMode =
				exports.SidebarView =
				exports.ScrollMode =
				exports.SCROLLBAR_PADDING =
				exports.RenderingStates =
				exports.RendererType =
				exports.ProgressBar =
				exports.PresentationModeState =
				exports.OutputScale =
				exports.MIN_SCALE =
				exports.MAX_SCALE =
				exports.MAX_AUTO_SCALE =
				exports.DEFAULT_SCALE_VALUE =
				exports.DEFAULT_SCALE_DELTA =
				exports.DEFAULT_SCALE =
					void 0;
			exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes;
			exports.apiPageModeToSidebarView = apiPageModeToSidebarView;
			exports.approximateFraction = approximateFraction;
			exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
			exports.binarySearchFirstItem = binarySearchFirstItem;
			exports.getActiveOrFocusedElement = getActiveOrFocusedElement;
			exports.getPageSizeInches = getPageSizeInches;
			exports.getVisibleElements = getVisibleElements;
			exports.isPortraitOrientation = isPortraitOrientation;
			exports.isValidRotation = isValidRotation;
			exports.isValidScrollMode = isValidScrollMode;
			exports.isValidSpreadMode = isValidSpreadMode;
			exports.noContextMenuHandler = noContextMenuHandler;
			exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
			exports.normalizeWheelEventDirection = normalizeWheelEventDirection;
			exports.parseQueryString = parseQueryString;
			exports.removeNullCharacters = removeNullCharacters;
			exports.roundToDivide = roundToDivide;
			exports.scrollIntoView = scrollIntoView;
			exports.watchScroll = watchScroll;
			const DEFAULT_SCALE_VALUE = 'auto';
			exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
			const DEFAULT_SCALE = 1.0;
			exports.DEFAULT_SCALE = DEFAULT_SCALE;
			const DEFAULT_SCALE_DELTA = 1.1;
			exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA;
			const MIN_SCALE = 0.1;
			exports.MIN_SCALE = MIN_SCALE;
			const MAX_SCALE = 3.0;
			exports.MAX_SCALE = MAX_SCALE;
			const UNKNOWN_SCALE = 0;
			exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
			const MAX_AUTO_SCALE = 1.25;
			exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
			const SCROLLBAR_PADDING = 40;
			exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
			const VERTICAL_PADDING = 5;
			exports.VERTICAL_PADDING = VERTICAL_PADDING;
			const RenderingStates = {
				INITIAL: 0,
				RUNNING: 1,
				PAUSED: 2,
				FINISHED: 3
			};
			exports.RenderingStates = RenderingStates;
			const PresentationModeState = {
				UNKNOWN: 0,
				NORMAL: 1,
				CHANGING: 2,
				FULLSCREEN: 3
			};
			exports.PresentationModeState = PresentationModeState;
			const SidebarView = {
				UNKNOWN: -1,
				NONE: 0,
				THUMBS: 1,
				OUTLINE: 2,
				ATTACHMENTS: 3,
				LAYERS: 4
			};
			exports.SidebarView = SidebarView;
			const RendererType = {
				CANVAS: 'canvas',
				SVG: 'svg'
			};
			exports.RendererType = RendererType;
			const TextLayerMode = {
				DISABLE: 0,
				ENABLE: 1,
				ENABLE_ENHANCE: 2
			};
			exports.TextLayerMode = TextLayerMode;
			const ScrollMode = {
				UNKNOWN: -1,
				PAGE: 0
			};
			exports.ScrollMode = ScrollMode;
			const SpreadMode = {
				UNKNOWN: -1,
				NONE: 0
			};
			exports.SpreadMode = SpreadMode;

			class OutputScale {
				constructor() {
					const pixelRatio = window.devicePixelRatio || 1;
					this.sx = pixelRatio;
					this.sy = pixelRatio;
				}

				get scaled() {
					return this.sx !== 1 || this.sy !== 1;
				}
			}

			exports.OutputScale = OutputScale;

			function scrollIntoView(element, spot, scrollMatches = false) {
				let parent = element.offsetParent;

				if (!parent) {
					console.error('offsetParent is not set -- cannot scroll');
					return;
				}

				let offsetY = element.offsetTop + element.clientTop;
				let offsetX = element.offsetLeft + element.clientLeft;

				while (
					(parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth) ||
					(scrollMatches && (parent.classList.contains('markedContent') || getComputedStyle(parent).overflow === 'hidden'))
				) {
					offsetY += parent.offsetTop;
					offsetX += parent.offsetLeft;
					parent = parent.offsetParent;

					if (!parent) {
						return;
					}
				}

				if (spot) {
					if (spot.top !== undefined) {
						offsetY += spot.top;
					}

					if (spot.left !== undefined) {
						offsetX += spot.left;
						parent.scrollLeft = offsetX;
					}
				}

				parent.scrollTop = offsetY;
			}

			function watchScroll(viewAreaElement, callback) {
				const debounceScroll = function (evt) {
					if (rAF) {
						return;
					}

					rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
						rAF = null;
						const currentX = viewAreaElement.scrollLeft;
						const lastX = state.lastX;

						if (currentX !== lastX) {
							state.right = currentX > lastX;
						}

						state.lastX = currentX;
						const currentY = viewAreaElement.scrollTop;
						const lastY = state.lastY;

						if (currentY !== lastY) {
							state.down = currentY > lastY;
						}

						state.lastY = currentY;
						callback(state);
					});
				};

				const state = {
					right: true,
					down: true,
					lastX: viewAreaElement.scrollLeft,
					lastY: viewAreaElement.scrollTop,
					_eventHandler: debounceScroll
				};
				let rAF = null;
				viewAreaElement.addEventListener('scroll', debounceScroll, true);
				return state;
			}

			function parseQueryString(query) {
				const params = new Map();

				for (const [key, value] of new URLSearchParams(query)) {
					params.set(key.toLowerCase(), value);
				}

				return params;
			}

			const NullCharactersRegExp = /\x00/g;
			const InvisibleCharactersRegExp = /[\x01-\x1F]/g;

			function removeNullCharacters(str, replaceInvisible = false) {
				if (typeof str !== 'string') {
					console.error(`The argument must be a string.`);
					return str;
				}

				if (replaceInvisible) {
					str = str.replace(InvisibleCharactersRegExp, ' ');
				}

				return str.replace(NullCharactersRegExp, '');
			}

			function binarySearchFirstItem(items, condition, start = 0) {
				let minIndex = start;
				let maxIndex = items.length - 1;

				if (maxIndex < 0 || !condition(items[maxIndex])) {
					return items.length;
				}

				if (condition(items[minIndex])) {
					return minIndex;
				}

				while (minIndex < maxIndex) {
					const currentIndex = (minIndex + maxIndex) >> 1;
					const currentItem = items[currentIndex];

					if (condition(currentItem)) {
						maxIndex = currentIndex;
					} else {
						minIndex = currentIndex + 1;
					}
				}

				return minIndex;
			}

			function approximateFraction(x) {
				if (Math.floor(x) === x) {
					return [x, 1];
				}

				const xinv = 1 / x;
				const limit = 8;

				if (xinv > limit) {
					return [1, limit];
				} else if (Math.floor(xinv) === xinv) {
					return [1, xinv];
				}

				const x_ = x > 1 ? xinv : x;
				let a = 0,
					b = 1,
					c = 1,
					d = 1;

				while (true) {
					const p = a + c,
						q = b + d;

					if (q > limit) {
						break;
					}

					if (x_ <= p / q) {
						c = p;
						d = q;
					} else {
						a = p;
						b = q;
					}
				}

				let result;

				if (x_ - a / b < c / d - x_) {
					result = x_ === x ? [a, b] : [b, a];
				} else {
					result = x_ === x ? [c, d] : [d, c];
				}

				return result;
			}

			function roundToDivide(x, div) {
				const r = x % div;
				return r === 0 ? x : Math.round(x - r + div);
			}

			function getPageSizeInches({ view, userUnit, rotate }) {
				const [x1, y1, x2, y2] = view;
				const changeOrientation = rotate % 180 !== 0;
				const width = ((x2 - x1) / 72) * userUnit;
				const height = ((y2 - y1) / 72) * userUnit;
				return {
					width: changeOrientation ? height : width,
					height: changeOrientation ? width : height
				};
			}

			function backtrackBeforeAllVisibleElements(index, views, top) {
				if (index < 2) {
					return index;
				}

				let elt = views[index].div;
				let pageTop = elt.offsetTop + elt.clientTop;

				if (pageTop >= top) {
					elt = views[index - 1].div;
					pageTop = elt.offsetTop + elt.clientTop;
				}

				for (let i = index - 2; i >= 0; --i) {
					elt = views[i].div;

					if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {
						break;
					}

					index = i;
				}

				return index;
			}

			function getVisibleElements({ scrollEl, views, sortByVisibility = false, horizontal = false, rtl = false }) {
				const top = scrollEl.scrollTop,
					bottom = top + scrollEl.clientHeight;
				const left = scrollEl.scrollLeft,
					right = left + scrollEl.clientWidth;

				function isElementBottomAfterViewTop(view) {
					const element = view.div;
					const elementBottom = element.offsetTop + element.clientTop + element.clientHeight;
					return elementBottom > top;
				}

				function isElementNextAfterViewHorizontally(view) {
					const element = view.div;
					const elementLeft = element.offsetLeft + element.clientLeft;
					const elementRight = elementLeft + element.clientWidth;
					return rtl ? elementLeft < right : elementRight > left;
				}

				const visible = [],
					ids = new Set(),
					numViews = views.length;
				let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop);

				if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) {
					firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);
				}

				let lastEdge = horizontal ? right : -1;

				for (let i = firstVisibleElementInd; i < numViews; i++) {
					const view = views[i],
						element = view.div;
					const currentWidth = element.offsetLeft + element.clientLeft;
					const currentHeight = element.offsetTop + element.clientTop;
					const viewWidth = element.clientWidth,
						viewHeight = element.clientHeight;
					const viewRight = currentWidth + viewWidth;
					const viewBottom = currentHeight + viewHeight;

					if (lastEdge === -1) {
						if (viewBottom >= bottom) {
							lastEdge = viewBottom;
						}
					} else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {
						break;
					}

					if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {
						continue;
					}

					const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);
					const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);
					const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,
						fractionWidth = (viewWidth - hiddenWidth) / viewWidth;
					const percent = (fractionHeight * fractionWidth * 100) | 0;
					visible.push({
						id: view.id,
						x: currentWidth,
						y: currentHeight,
						view,
						percent,
						widthPercent: (fractionWidth * 100) | 0
					});
					ids.add(view.id);
				}

				const first = visible[0],
					last = visible[visible.length - 1];

				if (sortByVisibility) {
					visible.sort(function (a, b) {
						const pc = a.percent - b.percent;

						if (Math.abs(pc) > 0.001) {
							return -pc;
						}

						return a.id - b.id;
					});
				}

				return {
					first,
					last,
					views: visible,
					ids
				};
			}

			function noContextMenuHandler(evt) {
				evt.preventDefault();
			}

			function normalizeWheelEventDirection(evt) {
				let delta = Math.hypot(evt.deltaX, evt.deltaY);
				const angle = Math.atan2(evt.deltaY, evt.deltaX);

				if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {
					delta = -delta;
				}

				return delta;
			}

			function normalizeWheelEventDelta(evt) {
				let delta = normalizeWheelEventDirection(evt);
				const MOUSE_DOM_DELTA_PIXEL_MODE = 0;
				const MOUSE_DOM_DELTA_LINE_MODE = 1;
				const MOUSE_PIXELS_PER_LINE = 30;
				const MOUSE_LINES_PER_PAGE = 30;

				if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {
					delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;
				} else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {
					delta /= MOUSE_LINES_PER_PAGE;
				}

				return delta;
			}

			function isValidRotation(angle) {
				return Number.isInteger(angle) && angle % 90 === 0;
			}

			function isValidScrollMode(mode) {
				return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN;
			}

			function isValidSpreadMode(mode) {
				return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN;
			}

			function isPortraitOrientation(size) {
				return size.width <= size.height;
			}

			const animationStarted = new Promise(function (resolve) {
				window.requestAnimationFrame(resolve);
			});
			exports.animationStarted = animationStarted;

			function clamp(v, min, max) {
				return Math.min(Math.max(v, min), max);
			}

			class ProgressBar {
				constructor(id) {
					if (arguments.length > 1) {
						throw new Error('ProgressBar no longer accepts any additional options, ' + 'please use CSS rules to modify its appearance instead.');
					}

					this.visible = true;
					this.div = document.querySelector(id + ' .progress');
					this.bar = this.div.parentNode;
					this.percent = 0;
				}

				#updateBar() {
					if (this._indeterminate) {
						this.div.classList.add('indeterminate');
						return;
					}

					this.div.classList.remove('indeterminate');
					const doc = document.documentElement;
					doc.style.setProperty('--progressBar-percent', `${this._percent}%`);
				}

				get percent() {
					return this._percent;
				}

				set percent(val) {
					this._indeterminate = isNaN(val);
					this._percent = clamp(val, 0, 100);
					this.#updateBar();
				}

				setWidth(viewer) {
					if (!viewer) {
						return;
					}

					const container = viewer.parentNode;
					const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;

					if (scrollbarWidth > 0) {
						const doc = document.documentElement;
						doc.style.setProperty('--progressBar-end-offset', `${scrollbarWidth}px`);
					}
				}

				hide() {
					if (!this.visible) {
						return;
					}

					this.visible = false;
					this.bar.classList.add('hidden');
				}

				show() {
					if (this.visible) {
						return;
					}

					this.visible = true;
					this.bar.classList.remove('hidden');
				}
			}

			exports.ProgressBar = ProgressBar;

			function getActiveOrFocusedElement() {
				let curRoot = document;
				let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(':focus');

				while (curActiveOrFocused?.shadowRoot) {
					curRoot = curActiveOrFocused.shadowRoot;
					curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(':focus');
				}

				return curActiveOrFocused;
			}

			function apiPageLayoutToViewerModes(layout) {
				let scrollMode = ScrollMode.PAGE,
					spreadMode = SpreadMode.NONE;

				switch (layout) {
					case 'SinglePage':
						scrollMode = ScrollMode.PAGE;
						break;

					case 'OneColumn':
						break;

					case 'TwoPageLeft':
						scrollMode = ScrollMode.PAGE;

					case 'TwoColumnLeft':
						spreadMode = SpreadMode.ODD;
						break;

					case 'TwoPageRight':
						scrollMode = ScrollMode.PAGE;

					case 'TwoColumnRight':
						spreadMode = SpreadMode.EVEN;
						break;
				}

				return {
					scrollMode,
					spreadMode
				};
			}

			function apiPageModeToSidebarView(mode) {
				switch (mode) {
					case 'UseNone':
						return SidebarView.NONE;

					case 'UseThumbs':
						return SidebarView.THUMBS;

					case 'UseOutlines':
						return SidebarView.OUTLINE;

					case 'UseAttachments':
						return SidebarView.ATTACHMENTS;

					case 'UseOC':
						return SidebarView.LAYERS;
				}

				return SidebarView.NONE;
			}

			/***/
		},
		/* 4 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0;
			exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
			const WaitOnType = {
				EVENT: 'event',
				TIMEOUT: 'timeout'
			};
			exports.WaitOnType = WaitOnType;

			function waitOnEventOrTimeout({ target, name, delay = 0 }) {
				return new Promise(function (resolve, reject) {
					if (typeof target !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {
						throw new Error('waitOnEventOrTimeout - invalid parameters.');
					}

					function handler(type) {
						if (target instanceof EventBus) {
							target._off(name, eventHandler);
						} else {
							target.removeEventListener(name, eventHandler);
						}

						if (timeout) {
							clearTimeout(timeout);
						}

						resolve(type);
					}

					const eventHandler = handler.bind(null, WaitOnType.EVENT);

					if (target instanceof EventBus) {
						target._on(name, eventHandler);
					} else {
						target.addEventListener(name, eventHandler);
					}

					const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
					const timeout = setTimeout(timeoutHandler, delay);
				});
			}

			class EventBus {
				constructor() {
					this._listeners = Object.create(null);
				}

				on(eventName, listener, options = null) {
					this._on(eventName, listener, {
						external: true,
						once: options?.once
					});
				}

				off(eventName, listener, options = null) {
					this._off(eventName, listener, {
						external: true,
						once: options?.once
					});
				}

				dispatch(eventName, data) {
					const eventListeners = this._listeners[eventName];

					if (!eventListeners || eventListeners.length === 0) {
						return;
					}

					let externalListeners;

					for (const { listener, external, once } of eventListeners.slice(0)) {
						if (once) {
							this._off(eventName, listener);
						}

						if (external) {
							(externalListeners ||= []).push(listener);
							continue;
						}

						listener(data);
					}

					if (externalListeners) {
						for (const listener of externalListeners) {
							listener(data);
						}

						externalListeners = null;
					}
				}

				_on(eventName, listener, options = null) {
					const eventListeners = (this._listeners[eventName] ||= []);
					eventListeners.push({
						listener,
						external: options?.external === true,
						once: options?.once === true
					});
				}

				_off(eventName, listener, options = null) {
					const eventListeners = this._listeners[eventName];

					if (!eventListeners) {
						return;
					}

					for (let i = 0, ii = eventListeners.length; i < ii; i++) {
						if (eventListeners[i].listener === listener) {
							eventListeners.splice(i, 1);
							return;
						}
					}
				}
			}

			exports.EventBus = EventBus;

			class AutomationEventBus extends EventBus {
				dispatch(eventName, data) {
					throw new Error('Not implemented: AutomationEventBus.dispatch');
				}
			}

			exports.AutomationEventBus = AutomationEventBus;

			/***/
		},
		/* 5 */
		/***/ module => {
			let pdfjsLib;

			if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {
				pdfjsLib = window['pdfjs-dist/build/pdf'];
			} else {
				pdfjsLib = require('../build/pdf.js');
			}

			module.exports = pdfjsLib;

			/***/
		},
		/* 6 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFCursorTools = exports.CursorTool = void 0;

			var _grab_to_pan = __webpack_require__(7);

			var _ui_utils = __webpack_require__(3);

			const CursorTool = {
				SELECT: 0,
				HAND: 1,
				ZOOM: 2
			};
			exports.CursorTool = CursorTool;

			class PDFCursorTools {
				constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {
					this.container = container;
					this.eventBus = eventBus;
					this.active = CursorTool.SELECT;
					this.activeBeforePresentationMode = null;
					this.handTool = new _grab_to_pan.GrabToPan({
						element: this.container
					});
					this.#addEventListeners();
					Promise.resolve().then(() => {
						this.switchTool(cursorToolOnLoad);
					});
				}

				get activeTool() {
					return this.active;
				}

				switchTool(tool) {
					if (this.activeBeforePresentationMode !== null) {
						return;
					}

					if (tool === this.active) {
						return;
					}

					const disableActiveTool = () => {
						switch (this.active) {
							case CursorTool.SELECT:
								break;

							case CursorTool.HAND:
								this.handTool.deactivate();
								break;

							case CursorTool.ZOOM:
						}
					};

					switch (tool) {
						case CursorTool.SELECT:
							disableActiveTool();
							break;

						case CursorTool.HAND:
							disableActiveTool();
							this.handTool.activate();
							break;

						case CursorTool.ZOOM:
						default:
							console.error(`switchTool: "${tool}" is an unsupported value.`);
							return;
					}

					this.active = tool;
					this.#dispatchEvent();
				}

				#dispatchEvent() {
					this.eventBus.dispatch('cursortoolchanged', {
						source: this,
						tool: this.active
					});
				}

				#addEventListeners() {
					this.eventBus._on('switchcursortool', evt => {
						this.switchTool(evt.tool);
					});

					this.eventBus._on('presentationmodechanged', evt => {
						switch (evt.state) {
							case _ui_utils.PresentationModeState.FULLSCREEN: {
								const previouslyActive = this.active;
								this.switchTool(CursorTool.SELECT);
								this.activeBeforePresentationMode = previouslyActive;
								break;
							}

							case _ui_utils.PresentationModeState.NORMAL: {
								const previouslyActive = this.activeBeforePresentationMode;
								this.activeBeforePresentationMode = null;
								this.switchTool(previouslyActive);
								break;
							}
						}
					});
				}
			}

			exports.PDFCursorTools = PDFCursorTools;

			/***/
		},
		/* 7 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.GrabToPan = void 0;
			const CSS_CLASS_GRAB = 'grab-to-pan-grab';

			class GrabToPan {
				constructor(options) {
					this.element = options.element;
					this.document = options.element.ownerDocument;

					if (typeof options.ignoreTarget === 'function') {
						this.ignoreTarget = options.ignoreTarget;
					}

					this.onActiveChanged = options.onActiveChanged;
					this.activate = this.activate.bind(this);
					this.deactivate = this.deactivate.bind(this);
					this.toggle = this.toggle.bind(this);
					this._onMouseDown = this.#onMouseDown.bind(this);
					this._onMouseMove = this.#onMouseMove.bind(this);
					this._endPan = this.#endPan.bind(this);
					const overlay = (this.overlay = document.createElement('div'));
					overlay.className = 'grab-to-pan-grabbing';
				}

				activate() {
					if (!this.active) {
						this.active = true;
						$('.canvas-container').css('pointer-events', 'none');
						this.element.addEventListener('mousedown', this._onMouseDown, true);
						this.element.classList.add(CSS_CLASS_GRAB);
						this.onActiveChanged?.(true);
					}
				}

				deactivate() {
					if (this.active) {
						this.active = false;
						$('.canvas-container').css('pointer-events', 'auto');
						this.element.removeEventListener('mousedown', this._onMouseDown, true);

						this._endPan();

						this.element.classList.remove(CSS_CLASS_GRAB);
						this.onActiveChanged?.(false);
					}
				}

				toggle() {
					if (this.active) {
						this.deactivate();
					} else {
						this.activate();
					}
				}

				ignoreTarget(node) {
					return node.matches('a[href], a[href] *, input, textarea, button, button *, select, option');
				}

				#onMouseDown(event) {
					if (event.button !== 0 || this.ignoreTarget(event.target)) {
						return;
					}

					if (event.originalTarget) {
						try {
							event.originalTarget.tagName;
						} catch (e) {
							return;
						}
					}

					this.scrollLeftStart = this.element.scrollLeft;
					this.scrollTopStart = this.element.scrollTop;
					this.clientXStart = event.clientX;
					this.clientYStart = event.clientY;
					this.document.addEventListener('mousemove', this._onMouseMove, true);
					this.document.addEventListener('mouseup', this._endPan, true);
					this.element.addEventListener('scroll', this._endPan, true);
					event.preventDefault();
					event.stopPropagation();
					const focusedElement = document.activeElement;

					if (focusedElement && !focusedElement.contains(event.target)) {
						focusedElement.blur();
					}
				}

				#onMouseMove(event) {
					this.element.removeEventListener('scroll', this._endPan, true);

					if (!(event.buttons & 1)) {
						this._endPan();

						return;
					}

					const xDiff = event.clientX - this.clientXStart;
					const yDiff = event.clientY - this.clientYStart;
					const scrollTop = this.scrollTopStart - yDiff;
					const scrollLeft = this.scrollLeftStart - xDiff;

					if (this.element.scrollTo) {
						this.element.scrollTo({
							top: scrollTop,
							left: scrollLeft,
							behavior: 'instant'
						});
					} else {
						this.element.scrollTop = scrollTop;
						this.element.scrollLeft = scrollLeft;
					}

					if (!this.overlay.parentNode) {
						document.body.appendChild(this.overlay);
					}
				}

				#endPan() {
					this.element.removeEventListener('scroll', this._endPan, true);
					this.document.removeEventListener('mousemove', this._onMouseMove, true);
					this.document.removeEventListener('mouseup', this._endPan, true);
					this.overlay.remove();
				}
			}

			exports.GrabToPan = GrabToPan;

			/***/
		},
		/* 8 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0;

			var _ui_utils = __webpack_require__(3);

			const DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
			const LinkTarget = {
				NONE: 0,
				SELF: 1,
				BLANK: 2,
				PARENT: 3,
				TOP: 4
			};
			exports.LinkTarget = LinkTarget;

			function addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {
				if (!url || typeof url !== 'string') {
					throw new Error('A valid "url" parameter must provided.');
				}

				const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url);

				if (enabled) {
					link.href = link.title = urlNullRemoved;
				} else {
					link.href = '';
					link.title = `Disabled: ${urlNullRemoved}`;

					link.onclick = () => {
						return false;
					};
				}

				let targetStr = '';

				switch (target) {
					case LinkTarget.NONE:
						break;

					case LinkTarget.SELF:
						targetStr = '_self';
						break;

					case LinkTarget.BLANK:
						targetStr = '_blank';
						break;

					case LinkTarget.PARENT:
						targetStr = '_parent';
						break;

					case LinkTarget.TOP:
						targetStr = '_top';
						break;
				}

				link.target = targetStr;
				link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
			}

			class PDFLinkService {
				#pagesRefCache = new Map();

				constructor({ eventBus, externalLinkTarget = null, externalLinkRel = null, ignoreDestinationZoom = false } = {}) {
					this.eventBus = eventBus;
					this.externalLinkTarget = externalLinkTarget;
					this.externalLinkRel = externalLinkRel;
					this.externalLinkEnabled = true;
					this._ignoreDestinationZoom = ignoreDestinationZoom;
					this.baseUrl = null;
					this.pdfDocument = null;
					this.pdfViewer = null;
					this.pdfHistory = null;
				}

				setDocument(pdfDocument, baseUrl = null) {
					this.baseUrl = baseUrl;
					this.pdfDocument = pdfDocument;
					this.#pagesRefCache.clear();
				}

				setViewer(pdfViewer) {
					this.pdfViewer = pdfViewer;
				}

				setHistory(pdfHistory) {
					this.pdfHistory = pdfHistory;
				}

				get pagesCount() {
					return this.pdfDocument ? this.pdfDocument.numPages : 0;
				}

				get page() {
					return this.pdfViewer.currentPageNumber;
				}

				set page(value) {
					this.pdfViewer.currentPageNumber = value;
				}

				get rotation() {
					return this.pdfViewer.pagesRotation;
				}

				set rotation(value) {
					this.pdfViewer.pagesRotation = value;
				}

				#goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
					const destRef = explicitDest[0];
					let pageNumber;

					if (typeof destRef === 'object' && destRef !== null) {
						pageNumber = this._cachedPageNumber(destRef);

						if (!pageNumber) {
							this.pdfDocument
								.getPageIndex(destRef)
								.then(pageIndex => {
									this.cachePageRef(pageIndex + 1, destRef);
									this.#goToDestinationHelper(rawDest, namedDest, explicitDest);
								})
								.catch(() => {
									console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`);
								});
							return;
						}
					} else if (Number.isInteger(destRef)) {
						pageNumber = destRef + 1;
					} else {
						console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`);
						return;
					}

					if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
						console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
						return;
					}

					if (this.pdfHistory) {
						this.pdfHistory.pushCurrentPosition();
						this.pdfHistory.push({
							namedDest,
							explicitDest,
							pageNumber
						});
					}

					this.pdfViewer.scrollPageIntoView({
						pageNumber,
						destArray: explicitDest,
						ignoreDestinationZoom: this._ignoreDestinationZoom
					});
					window.notifyPageChange(pageNumber);
				}

				async goToDestination(dest) {
					if (!this.pdfDocument) {
						return;
					}

					let namedDest, explicitDest;

					if (typeof dest === 'string') {
						namedDest = dest;
						explicitDest = await this.pdfDocument.getDestination(dest);
					} else {
						namedDest = null;
						explicitDest = await dest;
					}

					if (!Array.isArray(explicitDest)) {
						console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
						return;
					}

					this.#goToDestinationHelper(dest, namedDest, explicitDest);
				}

				goToPage(val) {
					if (!this.pdfDocument) {
						return;
					}

					const pageNumber = (typeof val === 'string' && this.pdfViewer.pageLabelToPageNumber(val)) || val | 0;

					if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
						console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
						return;
					}

					if (this.pdfHistory) {
						this.pdfHistory.pushCurrentPosition();
						this.pdfHistory.pushPage(pageNumber);
					}

					this.pdfViewer.scrollPageIntoView({
						pageNumber
					});
				}

				addLinkAttributes(link, url, newWindow = false) {
					addLinkAttributes(link, {
						url,
						target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,
						rel: this.externalLinkRel,
						enabled: this.externalLinkEnabled
					});
				}

				getDestinationHash(dest) {
					if (typeof dest === 'string') {
						if (dest.length > 0) {
							return this.getAnchorUrl('#' + escape(dest));
						}
					} else if (Array.isArray(dest)) {
						const str = JSON.stringify(dest);

						if (str.length > 0) {
							return this.getAnchorUrl('#' + escape(str));
						}
					}

					return this.getAnchorUrl('');
				}

				getAnchorUrl(anchor) {
					return (this.baseUrl || '') + anchor;
				}

				setHash(hash) {
					if (!this.pdfDocument) {
						return;
					}

					let pageNumber, dest;

					if (hash.includes('=')) {
						const params = (0, _ui_utils.parseQueryString)(hash);

						if (params.has('search')) {
							this.eventBus.dispatch('findfromurlhash', {
								source: this,
								query: params.get('search').replace(/"/g, ''),
								phraseSearch: params.get('phrase') === 'true'
							});
						}

						if (params.has('page')) {
							pageNumber = params.get('page') | 0 || 1;
						}

						if (params.has('zoom')) {
							const zoomArgs = params.get('zoom').split(',');
							const zoomArg = zoomArgs[0];
							const zoomArgNumber = parseFloat(zoomArg);

							if (!zoomArg.includes('Fit')) {
								dest = [
									null,
									{
										name: 'XYZ'
									},
									zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,
									zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,
									zoomArgNumber ? zoomArgNumber / 100 : zoomArg
								];
							} else {
								if (zoomArg === 'Fit' || zoomArg === 'FitB') {
									dest = [
										null,
										{
											name: zoomArg
										}
									];
								} else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') {
									dest = [
										null,
										{
											name: zoomArg
										},
										zoomArgs.length > 1 ? zoomArgs[1] | 0 : null
									];
								} else if (zoomArg === 'FitR') {
									if (zoomArgs.length !== 5) {
										console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
									} else {
										dest = [
											null,
											{
												name: zoomArg
											},
											zoomArgs[1] | 0,
											zoomArgs[2] | 0,
											zoomArgs[3] | 0,
											zoomArgs[4] | 0
										];
									}
								} else {
									console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`);
								}
							}
						}

						if (dest) {
							this.pdfViewer.scrollPageIntoView({
								pageNumber: pageNumber || this.page,
								destArray: dest,
								allowNegativeOffset: true
							});
						} else if (pageNumber) {
							this.page = pageNumber;
						}

						if (params.has('pagemode')) {
							this.eventBus.dispatch('pagemode', {
								source: this,
								mode: params.get('pagemode')
							});
						}

						if (params.has('nameddest')) {
							this.goToDestination(params.get('nameddest'));
						}
					} else {
						dest = unescape(hash);

						try {
							dest = JSON.parse(dest);

							if (!Array.isArray(dest)) {
								dest = dest.toString();
							}
						} catch (ex) {}

						if (typeof dest === 'string' || PDFLinkService.#isValidExplicitDestination(dest)) {
							this.goToDestination(dest);
							return;
						}

						console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`);
					}
				}

				executeNamedAction(action) {
					switch (action) {
						case 'GoBack':
							this.pdfHistory?.back();
							break;

						case 'GoForward':
							this.pdfHistory?.forward();
							break;

						case 'NextPage':
							window.notifyPageChange(this.page + 1);
							this.pdfViewer.nextPage();
							break;

						case 'PrevPage':
							window.notifyPageChange(this.page - 1);
							this.pdfViewer.previousPage();
							break;

						case 'LastPage':
							window.notifyPageChange(this.pagesCount);
							this.page = this.pagesCount;
							break;

						case 'FirstPage':
							window.notifyPageChange(1);
							this.page = 1;
							break;

						default:
							break;
					}

					this.eventBus.dispatch('namedaction', {
						source: this,
						action
					});
				}

				cachePageRef(pageNum, pageRef) {
					if (!pageRef) {
						return;
					}

					const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
					this.#pagesRefCache.set(refStr, pageNum);
				}

				_cachedPageNumber(pageRef) {
					if (!pageRef) {
						return null;
					}

					const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
					return this.#pagesRefCache.get(refStr) || null;
				}

				isPageVisible(pageNumber) {
					return this.pdfViewer.isPageVisible(pageNumber);
				}

				isPageCached(pageNumber) {
					return this.pdfViewer.isPageCached(pageNumber);
				}

				static #isValidExplicitDestination(dest) {
					if (!Array.isArray(dest)) {
						return false;
					}

					const destLength = dest.length;

					if (destLength < 2) {
						return false;
					}

					const page = dest[0];

					if (!(typeof page === 'object' && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
						return false;
					}

					const zoom = dest[1];

					if (!(typeof zoom === 'object' && typeof zoom.name === 'string')) {
						return false;
					}

					let allowNull = true;

					switch (zoom.name) {
						case 'XYZ':
							if (destLength !== 5) {
								return false;
							}

							break;

						case 'Fit':
						case 'FitB':
							return destLength === 2;

						case 'FitH':
						case 'FitBH':
						case 'FitV':
						case 'FitBV':
							if (destLength !== 3) {
								return false;
							}

							break;

						case 'FitR':
							if (destLength !== 6) {
								return false;
							}

							allowNull = false;
							break;

						default:
							return false;
					}

					for (let i = 2; i < destLength; i++) {
						const param = dest[i];

						if (!(typeof param === 'number' || (allowNull && param === null))) {
							return false;
						}
					}

					return true;
				}
			}

			exports.PDFLinkService = PDFLinkService;

			class SimpleLinkService {
				constructor() {
					this.externalLinkEnabled = true;
				}

				get pagesCount() {
					return 0;
				}

				get page() {
					return 0;
				}

				set page(value) {}

				get rotation() {
					return 0;
				}

				set rotation(value) {}

				async goToDestination(dest) {}

				goToPage(val) {}

				addLinkAttributes(link, url, newWindow = false) {
					addLinkAttributes(link, {
						url,
						enabled: this.externalLinkEnabled
					});
				}

				getDestinationHash(dest) {
					return '#';
				}

				getAnchorUrl(hash) {
					return '#';
				}

				setHash(hash) {}

				executeNamedAction(action) {}

				cachePageRef(pageNum, pageRef) {}

				isPageVisible(pageNumber) {
					return true;
				}

				isPageCached(pageNumber) {
					return true;
				}
			}

			exports.SimpleLinkService = SimpleLinkService;

			/***/
		},
		/* 9 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.OverlayManager = void 0;

			class OverlayManager {
				#overlays = new WeakMap();
				#active = null;

				get active() {
					return this.#active;
				}

				async register(dialog, canForceClose = false) {
					if (typeof dialog !== 'object') {
						throw new Error('Not enough parameters.');
					} else if (this.#overlays.has(dialog)) {
						throw new Error('The overlay is already registered.');
					}

					this.#overlays.set(dialog, {
						canForceClose
					});
					dialog.addEventListener('cancel', evt => {
						this.#active = null;
					});
				}

				async unregister(dialog) {
					if (!this.#overlays.has(dialog)) {
						throw new Error('The overlay does not exist.');
					} else if (this.#active === dialog) {
						throw new Error('The overlay cannot be removed while it is active.');
					}

					this.#overlays.delete(dialog);
				}

				async open(dialog) {
					if (!this.#overlays.has(dialog)) {
						throw new Error('The overlay does not exist.');
					} else if (this.#active) {
						if (this.#active === dialog) {
							throw new Error('The overlay is already active.');
						} else if (this.#overlays.get(dialog).canForceClose) {
							await this.close();
						} else {
							throw new Error('Another overlay is currently active.');
						}
					}

					this.#active = dialog;
					dialog.showModal();
				}

				async close(dialog = this.#active) {
					if (!this.#overlays.has(dialog)) {
						throw new Error('The overlay does not exist.');
					} else if (!this.#active) {
						throw new Error('The overlay is currently not active.');
					} else if (this.#active !== dialog) {
						throw new Error('Another overlay is currently active.');
					}

					dialog.close();
					this.#active = null;
				}
			}

			exports.OverlayManager = OverlayManager;

			/***/
		},
		/* 10 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PasswordPrompt = void 0;

			var _pdfjsLib = __webpack_require__(5);

			class PasswordPrompt {
				#updateCallback = null;
				#reason = null;

				constructor(options, overlayManager, l10n, isViewerEmbedded = false) {
					this.dialog = options.dialog;
					this.label = options.label;
					this.input = options.input;
					this.submitButton = options.submitButton;
					this.cancelButton = options.cancelButton;
					this.overlayManager = overlayManager;
					this.l10n = l10n;
					this._isViewerEmbedded = isViewerEmbedded;
					this.submitButton.addEventListener('click', this.#verify.bind(this));
					this.cancelButton.addEventListener('click', this.#cancel.bind(this));
					this.input.addEventListener('keydown', e => {
						if (e.keyCode === 13) {
							this.#verify();
						}
					});
					this.overlayManager.register(this.dialog, true);
					this.dialog.addEventListener('close', this.#cancel.bind(this));
				}

				async open() {
					await this.overlayManager.open(this.dialog);
					const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD;

					if (!this._isViewerEmbedded || passwordIncorrect) {
						this.input.focus();
					}

					this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? 'invalid' : 'label'}`);
				}

				async close() {
					if (this.overlayManager.active === this.dialog) {
						this.overlayManager.close(this.dialog);
					}
				}

				#verify() {
					const password = this.input.value;

					if (password?.length > 0) {
						this.#invokeCallback(password);
					}
				}

				#cancel() {
					this.#invokeCallback(new Error('PasswordPrompt cancelled.'));
				}

				#invokeCallback(password) {
					if (!this.#updateCallback) {
						return;
					}

					this.close();
					this.input.value = '';
					this.#updateCallback(password);
					this.#updateCallback = null;
				}

				setUpdateCallback(updateCallback, reason) {
					this.#updateCallback = updateCallback;
					this.#reason = reason;
				}
			}

			exports.PasswordPrompt = PasswordPrompt;

			/***/
		},
		/* 11 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFAttachmentViewer = void 0;

			var _pdfjsLib = __webpack_require__(5);

			var _base_tree_viewer = __webpack_require__(12);

			var _event_utils = __webpack_require__(4);

			class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
				constructor(options) {
					super(options);

					this.eventBus._on('fileattachmentannotation', this.#appendAttachment.bind(this));
				}

				reset(keepRenderedCapability = false) {
					super.reset();
					this._attachments = null;

					if (!keepRenderedCapability) {
						this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();
					}

					this._pendingDispatchEvent = false;
				}

				async _dispatchEvent(attachmentsCount) {
					this._renderedCapability.resolve();

					if (attachmentsCount === 0 && !this._pendingDispatchEvent) {
						this._pendingDispatchEvent = true;
						await (0, _event_utils.waitOnEventOrTimeout)({
							target: this.eventBus,
							name: 'annotationlayerrendered',
							delay: 1000
						});

						if (!this._pendingDispatchEvent) {
							return;
						}
					}

					this._pendingDispatchEvent = false;
					this.eventBus.dispatch('attachmentsloaded', {
						source: this,
						attachmentsCount
					});
				}

				render({ attachments, keepRenderedCapability = false }) {
					if (this._attachments) {
						this.reset(keepRenderedCapability);
					}

					this._attachments = attachments || null;

					if (!attachments) {
						this._dispatchEvent(0);

						return;
					}

					const names = Object.keys(attachments).sort(function (a, b) {
						return a.toLowerCase().localeCompare(b.toLowerCase());
					});
					const fragment = document.createDocumentFragment();
					let attachmentsCount = 0;

					for (const name of names) {
						const item = attachments[name];
						const content = item.content,
							filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename);
						const div = document.createElement('div');
						div.className = 'treeItem';
						const element = document.createElement('a');

						this._bindLink(element, {
							content,
							filename
						});

						element.textContent = this._normalizeTextContent(filename);
						div.appendChild(element);
						fragment.appendChild(div);
						attachmentsCount++;
					}

					this._finishRendering(fragment, attachmentsCount);
				}

				#appendAttachment({ filename, content }) {
					const renderedPromise = this._renderedCapability.promise;
					renderedPromise.then(() => {
						if (renderedPromise !== this._renderedCapability.promise) {
							return;
						}

						const attachments = this._attachments || Object.create(null);

						for (const name in attachments) {
							if (filename === name) {
								return;
							}
						}

						attachments[filename] = {
							filename,
							content
						};
						this.render({
							attachments,
							keepRenderedCapability: true
						});
					});
				}
			}

			exports.PDFAttachmentViewer = PDFAttachmentViewer;

			/***/
		},
		/* 12 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.BaseTreeViewer = void 0;

			var _ui_utils = __webpack_require__(3);

			const TREEITEM_OFFSET_TOP = -100;
			const TREEITEM_SELECTED_CLASS = 'selected';

			class BaseTreeViewer {
				constructor(options) {
					if (this.constructor === BaseTreeViewer) {
						throw new Error('Cannot initialize BaseTreeViewer.');
					}

					this.container = options.container;
					this.eventBus = options.eventBus;
					this.reset();
				}

				reset() {
					this._pdfDocument = null;
					this._lastToggleIsShow = true;
					this._currentTreeItem = null;
					this.container.textContent = '';
					this.container.classList.remove('treeWithDeepNesting');
				}

				_dispatchEvent(count) {
					throw new Error('Not implemented: _dispatchEvent');
				}

				_bindLink(element, params) {
					throw new Error('Not implemented: _bindLink');
				}

				_normalizeTextContent(str) {
					return (0, _ui_utils.removeNullCharacters)(str, true) || '\u2013';
				}

				_addToggleButton(div, hidden = false) {
					const toggler = document.createElement('div');
					toggler.className = 'treeItemToggler';

					if (hidden) {
						toggler.classList.add('treeItemsHidden');
					}

					toggler.onclick = evt => {
						evt.stopPropagation();
						toggler.classList.toggle('treeItemsHidden');

						if (evt.shiftKey) {
							const shouldShowAll = !toggler.classList.contains('treeItemsHidden');

							this._toggleTreeItem(div, shouldShowAll);
						}
					};

					div.insertBefore(toggler, div.firstChild);
				}

				_toggleTreeItem(root, show = false) {
					this._lastToggleIsShow = show;

					for (const toggler of root.querySelectorAll('.treeItemToggler')) {
						toggler.classList.toggle('treeItemsHidden', !show);
					}
				}

				_toggleAllTreeItems() {
					this._toggleTreeItem(this.container, !this._lastToggleIsShow);
				}

				_finishRendering(fragment, count, hasAnyNesting = false) {
					if (hasAnyNesting) {
						this.container.classList.add('treeWithDeepNesting');
						this._lastToggleIsShow = !fragment.querySelector('.treeItemsHidden');
					}

					this.container.appendChild(fragment);

					this._dispatchEvent(count);
				}

				render(params) {
					throw new Error('Not implemented: render');
				}

				_updateCurrentTreeItem(treeItem = null) {
					if (this._currentTreeItem) {
						this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);

						this._currentTreeItem = null;
					}

					if (treeItem) {
						treeItem.classList.add(TREEITEM_SELECTED_CLASS);
						this._currentTreeItem = treeItem;
					}
				}

				_scrollToCurrentTreeItem(treeItem) {
					if (!treeItem) {
						return;
					}

					let currentNode = treeItem.parentNode;

					while (currentNode && currentNode !== this.container) {
						if (currentNode.classList.contains('treeItem')) {
							const toggler = currentNode.firstElementChild;
							toggler?.classList.remove('treeItemsHidden');
						}

						currentNode = currentNode.parentNode;
					}

					this._updateCurrentTreeItem(treeItem);

					this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP);
				}
			}

			exports.BaseTreeViewer = BaseTreeViewer;

			/***/
		},
		/* 13 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});

			var _pdfjsLib = __webpack_require__(5);

			var _ui_utils = __webpack_require__(3);

			const DEFAULT_FIELD_CONTENT = '-';
			const NON_METRIC_LOCALES = ['en-us', 'en-lr', 'my'];
			const US_PAGE_NAMES = {
				'8.5x11': 'Letter',
				'8.5x14': 'Legal'
			};
			const METRIC_PAGE_NAMES = {
				'297x420': 'A3',
				'210x297': 'A4'
			};

			function getPageName(size, isPortrait, pageNames) {
				const width = isPortrait ? size.width : size.height;
				const height = isPortrait ? size.height : size.width;
				return pageNames[`${width}x${height}`];
			}
		},
		/* 14 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFFindBar = void 0;

			var _pdf_find_controller = __webpack_require__(15);

			const MATCHES_COUNT_LIMIT = 1000;

			class PDFFindBar {
				constructor(options, eventBus, l10n) {
					this.opened = false;
					this.bar = options.bar;
					this.toggleButton = options.toggleButton;
					this.findField = options.findField;
					this.highlightAll = options.highlightAllCheckbox;
					this.caseSensitive = options.caseSensitiveCheckbox;
					this.matchDiacritics = options.matchDiacriticsCheckbox;
					this.entireWord = options.entireWordCheckbox;
					this.findMsg = options.findMsg;
					this.findResultsCount = options.findResultsCount;
					this.findPreviousButton = options.findPreviousButton;
					this.findNextButton = options.findNextButton;
					this.eventBus = eventBus;
					this.l10n = l10n;
					this.toggleButton.addEventListener('click', () => {
						this.toggle();
					});
					this.findField.addEventListener('input', () => {
						this.dispatchEvent('');
					});
					this.bar.addEventListener('keydown', e => {
						switch (e.keyCode) {
							case 13:
								if (e.target === this.findField) {
									this.dispatchEvent('again', e.shiftKey);
								}

								break;

							case 27:
								this.close();
								break;
						}
					});
					this.findPreviousButton.addEventListener('click', () => {
						this.dispatchEvent('again', true);
					});
					this.findNextButton.addEventListener('click', () => {
						this.dispatchEvent('again', false);
					});
					this.highlightAll.addEventListener('click', () => {
						this.dispatchEvent('highlightallchange');
					});
					this.caseSensitive.addEventListener('click', () => {
						this.dispatchEvent('casesensitivitychange');
					});
					this.entireWord.addEventListener('click', () => {
						this.dispatchEvent('entirewordchange');
					});
					this.matchDiacritics.addEventListener('click', () => {
						this.dispatchEvent('diacriticmatchingchange');
					});

					this.eventBus._on('resize', this.#adjustWidth.bind(this));
				}

				reset() {
					this.updateUIState();
				}

				dispatchEvent(type, findPrev = false) {
					this.eventBus.dispatch('find', {
						source: this,
						type,
						query: this.findField.value,
						phraseSearch: true,
						caseSensitive: this.caseSensitive.checked,
						entireWord: this.entireWord.checked,
						highlightAll: this.highlightAll.checked,
						findPrevious: findPrev,
						matchDiacritics: this.matchDiacritics.checked
					});
				}

				updateUIState(state, previous, matchesCount) {
					let findMsg = Promise.resolve('');
					let status = '';

					switch (state) {
						case _pdf_find_controller.FindState.FOUND:
							break;

						case _pdf_find_controller.FindState.PENDING:
							status = 'pending';
							break;

						case _pdf_find_controller.FindState.NOT_FOUND:
							findMsg = this.l10n.get('find_not_found');
							status = 'notFound';
							break;

						case _pdf_find_controller.FindState.WRAPPED:
							findMsg = this.l10n.get(`find_reached_${previous ? 'top' : 'bottom'}`);
							break;
					}

					this.findField.setAttribute('data-status', status);
					this.findField.setAttribute('aria-invalid', state === _pdf_find_controller.FindState.NOT_FOUND);
					findMsg.then(msg => {
						this.findMsg.textContent = msg;
						this.#adjustWidth();
					});
					this.updateResultsCount(matchesCount);
				}

				updateResultsCount({ current = 0, total = 0 } = {}) {
					const limit = MATCHES_COUNT_LIMIT;
					let matchCountMsg = Promise.resolve('');

					if (total > 0) {
						if (total > limit) {
							let key = 'find_match_count_limit';
							matchCountMsg = this.l10n.get(key, {
								limit
							});
						} else {
							let key = 'find_match_count';
							matchCountMsg = this.l10n.get(key, {
								current,
								total
							});
						}
					}

					matchCountMsg.then(msg => {
						this.findResultsCount.textContent = msg;
						this.#adjustWidth();
					});
				}

				open() {
					if (!this.opened) {
						this.opened = true;
						this.toggleButton.classList.add('toggled');
						this.toggleButton.setAttribute('aria-expanded', 'true');
						this.bar.classList.remove('hidden');
					}

					this.findField.select();
					this.findField.focus();
					this.#adjustWidth();
				}

				close() {
					if (!this.opened) {
						return;
					}

					this.opened = false;
					this.toggleButton.classList.remove('toggled');
					this.toggleButton.setAttribute('aria-expanded', 'false');
					this.bar.classList.add('hidden');
					this.eventBus.dispatch('findbarclose', {
						source: this
					});
				}

				toggle() {
					if (this.opened) {
						this.close();
					} else {
						this.open();
					}
				}

				#adjustWidth() {
					if (!this.opened) {
						return;
					}

					this.bar.classList.remove('wrapContainers');
					const findbarHeight = this.bar.clientHeight;
					const inputContainerHeight = this.bar.firstElementChild.clientHeight;

					if (findbarHeight > inputContainerHeight) {
						this.bar.classList.add('wrapContainers');
					}
				}
			}

			exports.PDFFindBar = PDFFindBar;

			/***/
		},
		/* 15 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFFindController = exports.FindState = void 0;

			var _ui_utils = __webpack_require__(3);

			var _pdfjsLib = __webpack_require__(5);

			var _pdf_find_utils = __webpack_require__(16);

			const FindState = {
				FOUND: 0,
				NOT_FOUND: 1,
				WRAPPED: 2,
				PENDING: 3
			};
			exports.FindState = FindState;
			const FIND_TIMEOUT = 250;
			const MATCH_SCROLL_OFFSET_TOP = -50;
			const MATCH_SCROLL_OFFSET_LEFT = -400;
			const CHARACTERS_TO_NORMALIZE = {
				'\u2010': '-',
				'\u2018': "'",
				'\u2019': "'",
				'\u201A': "'",
				'\u201B': "'",
				'\u201C': '"',
				'\u201D': '"',
				'\u201E': '"',
				'\u201F': '"',
				'\u00BC': '1/4',
				'\u00BD': '1/2',
				'\u00BE': '3/4'
			};
			const DIACRITICS_EXCEPTION = new Set([
				0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60,
				0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74
			]);
			const DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()].map(x => String.fromCharCode(x)).join('');
			const DIACRITICS_REG_EXP = /\p{M}+/gu;
			const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu;
			const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u;
			const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u;
			let normalizationRegex = null;

			function normalize(text) {
				if (!normalizationRegex) {
					const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');
					normalizationRegex = new RegExp(`([${replace}])|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(\\n)`, 'gum');
				}

				const rawDiacriticsPositions = [];
				let m;

				while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {
					rawDiacriticsPositions.push([m[0].length, m.index]);
				}

				let normalized = text.normalize('NFD');
				const positions = [[0, 0]];
				let k = 0;
				let shift = 0;
				let shiftOrigin = 0;
				let eol = 0;
				let hasDiacritics = false;
				normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, i) => {
					i -= shiftOrigin;

					if (p1) {
						const replacement = CHARACTERS_TO_NORMALIZE[match];
						const jj = replacement.length;

						for (let j = 1; j < jj; j++) {
							positions.push([i - shift + j, shift - j]);
						}

						shift -= jj - 1;
						return replacement;
					}

					if (p2) {
						const hasTrailingDashEOL = p2.endsWith('\n');
						const len = hasTrailingDashEOL ? p2.length - 2 : p2.length;
						hasDiacritics = true;
						let jj = len;

						if (i + eol === rawDiacriticsPositions[k]?.[1]) {
							jj -= rawDiacriticsPositions[k][0];
							++k;
						}

						for (let j = 1; j < jj + 1; j++) {
							positions.push([i - 1 - shift + j, shift - j]);
						}

						shift -= jj;
						shiftOrigin += jj;

						if (hasTrailingDashEOL) {
							i += len - 1;
							positions.push([i - shift + 1, 1 + shift]);
							shift += 1;
							shiftOrigin += 1;
							eol += 1;
							return p2.slice(0, len);
						}

						return p2;
					}

					if (p3) {
						positions.push([i - shift + 1, 1 + shift]);
						shift += 1;
						shiftOrigin += 1;
						eol += 1;
						return p3.charAt(0);
					}

					positions.push([i - shift + 1, shift - 1]);
					shift -= 1;
					shiftOrigin += 1;
					eol += 1;
					return ' ';
				});
				positions.push([normalized.length, shift]);
				return [normalized, positions, hasDiacritics];
			}

			function getOriginalIndex(diffs, pos, len) {
				if (!diffs) {
					return [pos, len];
				}

				const start = pos;
				const end = pos + len;
				let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start);

				if (diffs[i][0] > start) {
					--i;
				}

				let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i);

				if (diffs[j][0] > end) {
					--j;
				}

				return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]];
			}

			class PDFFindController {
				constructor({ linkService, eventBus }) {
					this._linkService = linkService;
					this._eventBus = eventBus;
					this.#reset();

					eventBus._on('find', this.#onFind.bind(this));

					eventBus._on('findbarclose', this.#onFindBarClose.bind(this));
				}

				get highlightMatches() {
					return this._highlightMatches;
				}

				get pageMatches() {
					return this._pageMatches;
				}

				get pageMatchesLength() {
					return this._pageMatchesLength;
				}

				get selected() {
					return this._selected;
				}

				get state() {
					return this._state;
				}

				setDocument(pdfDocument) {
					if (this._pdfDocument) {
						this.#reset();
					}

					if (!pdfDocument) {
						return;
					}

					this._pdfDocument = pdfDocument;

					this._firstPageCapability.resolve();
				}

				#onFind(state) {
					if (!state) {
						return;
					}

					const pdfDocument = this._pdfDocument;
					const { type } = state;

					if (this._state === null || this.#shouldDirtyMatch(state)) {
						this._dirtyMatch = true;
					}

					this._state = state;

					if (type !== 'highlightallchange') {
						this.#updateUIState(FindState.PENDING);
					}

					this._firstPageCapability.promise.then(() => {
						if (!this._pdfDocument || (pdfDocument && this._pdfDocument !== pdfDocument)) {
							return;
						}

						this.#extractText();
						const findbarClosed = !this._highlightMatches;
						const pendingTimeout = !!this._findTimeout;

						if (this._findTimeout) {
							clearTimeout(this._findTimeout);
							this._findTimeout = null;
						}

						if (!type) {
							this._findTimeout = setTimeout(() => {
								this.#nextMatch();
								this._findTimeout = null;
							}, FIND_TIMEOUT);
						} else if (this._dirtyMatch) {
							this.#nextMatch();
						} else if (type === 'again') {
							this.#nextMatch();

							if (findbarClosed && this._state.highlightAll) {
								this.#updateAllPages();
							}
						} else if (type === 'highlightallchange') {
							if (pendingTimeout) {
								this.#nextMatch();
							} else {
								this._highlightMatches = true;
							}

							this.#updateAllPages();
						} else {
							this.#nextMatch();
						}
					});
				}

				scrollMatchIntoView({ element = null, selectedLeft = 0, pageIndex = -1, matchIndex = -1 }) {
					if (!this._scrollMatches || !element) {
						return;
					} else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {
						return;
					} else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {
						return;
					}

					this._scrollMatches = false;
					const spot = {
						top: MATCH_SCROLL_OFFSET_TOP,
						left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT
					};
					(0, _ui_utils.scrollIntoView)(element, spot, true);
				}

				#reset() {
					this._highlightMatches = false;
					this._scrollMatches = false;
					this._pdfDocument = null;
					this._pageMatches = [];
					this._pageMatchesLength = [];
					this._state = null;
					this._selected = {
						pageIdx: -1,
						matchIdx: -1
					};
					this._offset = {
						pageIdx: null,
						matchIdx: null,
						wrapped: false
					};
					this._extractTextPromises = [];
					this._pageContents = [];
					this._pageDiffs = [];
					this._hasDiacritics = [];
					this._matchesCountTotal = 0;
					this._pagesToSearch = null;
					this._pendingFindMatches = new Set();
					this._resumePageIdx = null;
					this._dirtyMatch = false;
					clearTimeout(this._findTimeout);
					this._findTimeout = null;
					this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
				}

				get #query() {
					if (this._state.query !== this._rawQuery) {
						this._rawQuery = this._state.query;
						[this._normalizedQuery] = normalize(this._state.query);
					}

					return this._normalizedQuery;
				}

				#shouldDirtyMatch(state) {
					if (state.query !== this._state.query) {
						return true;
					}

					switch (state.type) {
						case 'again':
							const pageNumber = this._selected.pageIdx + 1;
							const linkService = this._linkService;

							if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) {
								return true;
							}

							return false;

						case 'highlightallchange':
							return false;
					}

					return true;
				}

				#isEntireWord(content, startIdx, length) {
					let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP);

					if (match) {
						const first = content.charCodeAt(startIdx);
						const limit = match[1].charCodeAt(0);

						if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
							return false;
						}
					}

					match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP);

					if (match) {
						const last = content.charCodeAt(startIdx + length - 1);
						const limit = match[1].charCodeAt(0);

						if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) {
							return false;
						}
					}

					return true;
				}

				#calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {
					const matches = [],
						matchesLength = [];
					const diffs = this._pageDiffs[pageIndex];
					let match;

					while ((match = query.exec(pageContent)) !== null) {
						if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) {
							continue;
						}

						const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length);

						if (matchLen) {
							matches.push(matchPos);
							matchesLength.push(matchLen);
						}
					}

					this._pageMatches[pageIndex] = matches;
					this._pageMatchesLength[pageIndex] = matchesLength;
				}

				#convertToRegExpString(query, hasDiacritics) {
					const { matchDiacritics } = this._state;
					let isUnicode = false;
					query = query.replace(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => {
						if (p1) {
							return `[ ]*\\${p1}[ ]*`;
						}

						if (p2) {
							return `[ ]*${p2}[ ]*`;
						}

						if (p3) {
							return '[ ]+';
						}

						if (matchDiacritics) {
							return p4 || p5;
						}

						if (p4) {
							return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : '';
						}

						if (hasDiacritics) {
							isUnicode = true;
							return `${p5}\\p{M}*`;
						}

						return p5;
					});
					const trailingSpaces = '[ ]*';

					if (query.endsWith(trailingSpaces)) {
						query = query.slice(0, query.length - trailingSpaces.length);
					}

					if (matchDiacritics) {
						if (hasDiacritics) {
							isUnicode = true;
							query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`;
						}
					}

					return [isUnicode, query];
				}

				#calculateMatch(pageIndex) {
					let query = this.#query;

					if (query.length === 0) {
						return;
					}

					const { caseSensitive, entireWord, phraseSearch } = this._state;
					const pageContent = this._pageContents[pageIndex];
					const hasDiacritics = this._hasDiacritics[pageIndex];
					let isUnicode = false;

					if (phraseSearch) {
						[isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);
					} else {
						const match = query.match(/\S+/g);

						if (match) {
							query = match
								.sort()
								.reverse()
								.map(q => {
									const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics);
									isUnicode ||= isUnicodePart;
									return `(${queryPart})`;
								})
								.join('|');
						}
					}

					const flags = `g${isUnicode ? 'u' : ''}${caseSensitive ? '' : 'i'}`;
					query = new RegExp(query, flags);
					this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent);

					if (this._state.highlightAll) {
						this.#updatePage(pageIndex);
					}

					if (this._resumePageIdx === pageIndex) {
						this._resumePageIdx = null;
						this.#nextPageMatch();
					}

					const pageMatchesCount = this._pageMatches[pageIndex].length;

					if (pageMatchesCount > 0) {
						this._matchesCountTotal += pageMatchesCount;
						this.#updateUIResultsCount();
					}
				}

				#extractText() {
					if (this._extractTextPromises.length > 0) {
						return;
					}

					let promise = Promise.resolve();

					for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {
						const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();
						this._extractTextPromises[i] = extractTextCapability.promise;
						promise = promise.then(() => {
							return this._pdfDocument
								.getPage(i + 1)
								.then(pdfPage => {
									return pdfPage.getTextContent();
								})
								.then(
									textContent => {
										const strBuf = [];

										for (const textItem of textContent.items) {
											strBuf.push(textItem.str);

											if (textItem.hasEOL) {
												strBuf.push('\n');
											}
										}

										[this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join(''));
										extractTextCapability.resolve();
									},
									reason => {
										console.error(`Unable to get text content for page ${i + 1}`, reason);
										this._pageContents[i] = '';
										this._pageDiffs[i] = null;
										this._hasDiacritics[i] = false;
										extractTextCapability.resolve();
									}
								);
						});
					}
				}

				#updatePage(index) {
					if (this._scrollMatches && this._selected.pageIdx === index) {
						this._linkService.page = index + 1;
					}

					this._eventBus.dispatch('updatetextlayermatches', {
						source: this,
						pageIndex: index
					});
				}

				#updateAllPages() {
					this._eventBus.dispatch('updatetextlayermatches', {
						source: this,
						pageIndex: -1
					});
				}

				#nextMatch() {
					const previous = this._state.findPrevious;
					const currentPageIndex = this._linkService.page - 1;
					const numPages = this._linkService.pagesCount;
					this._highlightMatches = true;

					if (this._dirtyMatch) {
						this._dirtyMatch = false;
						this._selected.pageIdx = this._selected.matchIdx = -1;
						this._offset.pageIdx = currentPageIndex;
						this._offset.matchIdx = null;
						this._offset.wrapped = false;
						this._resumePageIdx = null;
						this._pageMatches.length = 0;
						this._pageMatchesLength.length = 0;
						this._matchesCountTotal = 0;
						this.#updateAllPages();

						for (let i = 0; i < numPages; i++) {
							if (this._pendingFindMatches.has(i)) {
								continue;
							}

							this._pendingFindMatches.add(i);

							this._extractTextPromises[i].then(() => {
								this._pendingFindMatches.delete(i);

								this.#calculateMatch(i);
							});
						}
					}

					if (this.#query === '') {
						this.#updateUIState(FindState.FOUND);
						return;
					}

					if (this._resumePageIdx) {
						return;
					}

					const offset = this._offset;
					this._pagesToSearch = numPages;

					if (offset.matchIdx !== null) {
						const numPageMatches = this._pageMatches[offset.pageIdx].length;

						if ((!previous && offset.matchIdx + 1 < numPageMatches) || (previous && offset.matchIdx > 0)) {
							offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
							this.#updateMatch(true);
							return;
						}

						this.#advanceOffsetPage(previous);
					}

					this.#nextPageMatch();
				}

				#matchesReady(matches) {
					const offset = this._offset;
					const numMatches = matches.length;
					const previous = this._state.findPrevious;

					if (numMatches) {
						offset.matchIdx = previous ? numMatches - 1 : 0;
						this.#updateMatch(true);
						return true;
					}

					this.#advanceOffsetPage(previous);

					if (offset.wrapped) {
						offset.matchIdx = null;

						if (this._pagesToSearch < 0) {
							this.#updateMatch(false);
							return true;
						}
					}

					return false;
				}

				#nextPageMatch() {
					if (this._resumePageIdx !== null) {
						console.error('There can only be one pending page.');
					}

					let matches = null;

					do {
						const pageIdx = this._offset.pageIdx;
						matches = this._pageMatches[pageIdx];

						if (!matches) {
							this._resumePageIdx = pageIdx;
							break;
						}
					} while (!this.#matchesReady(matches));
				}

				#advanceOffsetPage(previous) {
					const offset = this._offset;
					const numPages = this._linkService.pagesCount;
					offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
					offset.matchIdx = null;
					this._pagesToSearch--;

					if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
						offset.pageIdx = previous ? numPages - 1 : 0;
						offset.wrapped = true;
					}
				}

				#updateMatch(found = false) {
					let state = FindState.NOT_FOUND;
					const wrapped = this._offset.wrapped;
					this._offset.wrapped = false;

					if (found) {
						const previousPage = this._selected.pageIdx;
						this._selected.pageIdx = this._offset.pageIdx;
						this._selected.matchIdx = this._offset.matchIdx;
						state = wrapped ? FindState.WRAPPED : FindState.FOUND;

						if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
							this.#updatePage(previousPage);
						}
					}

					this.#updateUIState(state, this._state.findPrevious);

					if (this._selected.pageIdx !== -1) {
						this._scrollMatches = true;
						this.#updatePage(this._selected.pageIdx);
					}
				}

				#onFindBarClose(evt) {
					const pdfDocument = this._pdfDocument;

					this._firstPageCapability.promise.then(() => {
						if (!this._pdfDocument || (pdfDocument && this._pdfDocument !== pdfDocument)) {
							return;
						}

						if (this._findTimeout) {
							clearTimeout(this._findTimeout);
							this._findTimeout = null;
						}

						if (this._resumePageIdx) {
							this._resumePageIdx = null;
							this._dirtyMatch = true;
						}

						this.#updateUIState(FindState.FOUND);
						this._highlightMatches = false;
						this.#updateAllPages();
					});
				}

				#requestMatchesCount() {
					const { pageIdx, matchIdx } = this._selected;
					let current = 0,
						total = this._matchesCountTotal;

					if (matchIdx !== -1) {
						for (let i = 0; i < pageIdx; i++) {
							current += this._pageMatches[i]?.length || 0;
						}

						current += matchIdx + 1;
					}

					if (current < 1 || current > total) {
						current = total = 0;
					}

					return {
						current,
						total
					};
				}

				#updateUIResultsCount() {
					this._eventBus.dispatch('updatefindmatchescount', {
						source: this,
						matchesCount: this.#requestMatchesCount()
					});
				}

				#updateUIState(state, previous = false) {
					this._eventBus.dispatch('updatefindcontrolstate', {
						source: this,
						state,
						previous,
						matchesCount: this.#requestMatchesCount(),
						rawQuery: this._state?.query ?? null
					});
				}
			}

			exports.PDFFindController = PDFFindController;

			/***/
		},
		/* 16 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.CharacterType = void 0;
			exports.getCharacterType = getCharacterType;
			const CharacterType = {
				SPACE: 0,
				ALPHA_LETTER: 1,
				PUNCT: 2,
				HAN_LETTER: 3,
				KATAKANA_LETTER: 4,
				HIRAGANA_LETTER: 5,
				HALFWIDTH_KATAKANA_LETTER: 6,
				THAI_LETTER: 7
			};
			exports.CharacterType = CharacterType;

			function isAlphabeticalScript(charCode) {
				return charCode < 0x2e80;
			}

			function isAscii(charCode) {
				return (charCode & 0xff80) === 0;
			}

			function isAsciiAlpha(charCode) {
				return (charCode >= 0x61 && charCode <= 0x7a) || (charCode >= 0x41 && charCode <= 0x5a);
			}

			function isAsciiDigit(charCode) {
				return charCode >= 0x30 && charCode <= 0x39;
			}

			function isAsciiSpace(charCode) {
				return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a;
			}

			function isHan(charCode) {
				return (charCode >= 0x3400 && charCode <= 0x9fff) || (charCode >= 0xf900 && charCode <= 0xfaff);
			}

			function isKatakana(charCode) {
				return charCode >= 0x30a0 && charCode <= 0x30ff;
			}

			function isHiragana(charCode) {
				return charCode >= 0x3040 && charCode <= 0x309f;
			}

			function isHalfwidthKatakana(charCode) {
				return charCode >= 0xff60 && charCode <= 0xff9f;
			}

			function isThai(charCode) {
				return (charCode & 0xff80) === 0x0e00;
			}

			function getCharacterType(charCode) {
				if (isAlphabeticalScript(charCode)) {
					if (isAscii(charCode)) {
						if (isAsciiSpace(charCode)) {
							return CharacterType.SPACE;
						} else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) {
							return CharacterType.ALPHA_LETTER;
						}

						return CharacterType.PUNCT;
					} else if (isThai(charCode)) {
						return CharacterType.THAI_LETTER;
					} else if (charCode === 0xa0) {
						return CharacterType.SPACE;
					}

					return CharacterType.ALPHA_LETTER;
				}

				if (isHan(charCode)) {
					return CharacterType.HAN_LETTER;
				} else if (isKatakana(charCode)) {
					return CharacterType.KATAKANA_LETTER;
				} else if (isHiragana(charCode)) {
					return CharacterType.HIRAGANA_LETTER;
				} else if (isHalfwidthKatakana(charCode)) {
					return CharacterType.HALFWIDTH_KATAKANA_LETTER;
				}

				return CharacterType.ALPHA_LETTER;
			}

			/***/
		},
		/* 17 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFHistory = void 0;
			exports.isDestArraysEqual = isDestArraysEqual;
			exports.isDestHashesEqual = isDestHashesEqual;

			var _ui_utils = __webpack_require__(3);

			var _event_utils = __webpack_require__(4);

			const HASH_CHANGE_TIMEOUT = 1000;
			const POSITION_UPDATED_THRESHOLD = 50;
			const UPDATE_VIEWAREA_TIMEOUT = 1000;

			function getCurrentHash() {
				return document.location.hash;
			}

			class PDFHistory {
				constructor({ linkService, eventBus }) {
					this.linkService = linkService;
					this.eventBus = eventBus;
					this._initialized = false;
					this._fingerprint = '';
					this.reset();
					this._boundEvents = null;

					this.eventBus._on('pagesinit', () => {
						this._isPagesLoaded = false;

						this.eventBus._on(
							'pagesloaded',
							evt => {
								this._isPagesLoaded = !!evt.pagesCount;
							},
							{
								once: true
							}
						);
					});
				}

				initialize({ fingerprint, resetHistory = false, updateUrl = false }) {
					if (!fingerprint || typeof fingerprint !== 'string') {
						console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
						return;
					}

					if (this._initialized) {
						this.reset();
					}

					const reInitialized = this._fingerprint !== '' && this._fingerprint !== fingerprint;
					this._fingerprint = fingerprint;
					this._updateUrl = updateUrl === true;
					this._initialized = true;

					this._bindEvents();

					const state = window.history.state;
					this._popStateInProgress = false;
					this._blockHashChange = 0;
					this._currentHash = getCurrentHash();
					this._numPositionUpdates = 0;
					this._uid = this._maxUid = 0;
					this._destination = null;
					this._position = null;

					if (!this._isValidState(state, true) || resetHistory) {
						const { hash, page, rotation } = this._parseCurrentHash(true);

						if (!hash || reInitialized || resetHistory) {
							this._pushOrReplaceState(null, true);

							return;
						}

						this._pushOrReplaceState(
							{
								hash,
								page,
								rotation
							},
							true
						);

						return;
					}

					const destination = state.destination;

					this._updateInternalState(destination, state.uid, true);

					if (destination.rotation !== undefined) {
						this._initialRotation = destination.rotation;
					}

					if (destination.dest) {
						this._initialBookmark = JSON.stringify(destination.dest);
						this._destination.page = null;
					} else if (destination.hash) {
						this._initialBookmark = destination.hash;
					} else if (destination.page) {
						this._initialBookmark = `page=${destination.page}`;
					}
				}

				reset() {
					if (this._initialized) {
						this._pageHide();

						this._initialized = false;

						this._unbindEvents();
					}

					if (this._updateViewareaTimeout) {
						clearTimeout(this._updateViewareaTimeout);
						this._updateViewareaTimeout = null;
					}

					this._initialBookmark = null;
					this._initialRotation = null;
				}

				push({ namedDest = null, explicitDest, pageNumber }) {
					if (!this._initialized) {
						return;
					}

					if (namedDest && typeof namedDest !== 'string') {
						console.error('PDFHistory.push: ' + `"${namedDest}" is not a valid namedDest parameter.`);
						return;
					} else if (!Array.isArray(explicitDest)) {
						console.error('PDFHistory.push: ' + `"${explicitDest}" is not a valid explicitDest parameter.`);
						return;
					} else if (!this._isValidPage(pageNumber)) {
						if (pageNumber !== null || this._destination) {
							console.error('PDFHistory.push: ' + `"${pageNumber}" is not a valid pageNumber parameter.`);
							return;
						}
					}

					const hash = namedDest || JSON.stringify(explicitDest);

					if (!hash) {
						return;
					}

					let forceReplace = false;

					if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {
						if (this._destination.page) {
							return;
						}

						forceReplace = true;
					}

					if (this._popStateInProgress && !forceReplace) {
						return;
					}

					this._pushOrReplaceState(
						{
							dest: explicitDest,
							hash,
							page: pageNumber,
							rotation: this.linkService.rotation
						},
						forceReplace
					);

					if (!this._popStateInProgress) {
						this._popStateInProgress = true;
						Promise.resolve().then(() => {
							this._popStateInProgress = false;
						});
					}
				}

				pushPage(pageNumber) {
					if (!this._initialized) {
						return;
					}

					if (!this._isValidPage(pageNumber)) {
						console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`);
						return;
					}

					if (this._destination?.page === pageNumber) {
						return;
					}

					if (this._popStateInProgress) {
						return;
					}

					this._pushOrReplaceState({
						dest: null,
						hash: `page=${pageNumber}`,
						page: pageNumber,
						rotation: this.linkService.rotation
					});

					if (!this._popStateInProgress) {
						this._popStateInProgress = true;
						Promise.resolve().then(() => {
							this._popStateInProgress = false;
						});
					}
				}

				pushCurrentPosition() {
					if (!this._initialized || this._popStateInProgress) {
						return;
					}

					this._tryPushCurrentPosition();
				}

				back() {
					if (!this._initialized || this._popStateInProgress) {
						return;
					}

					const state = window.history.state;

					if (this._isValidState(state) && state.uid > 0) {
						window.history.back();
					}
				}

				forward() {
					if (!this._initialized || this._popStateInProgress) {
						return;
					}

					const state = window.history.state;

					if (this._isValidState(state) && state.uid < this._maxUid) {
						window.history.forward();
					}
				}

				get popStateInProgress() {
					return this._initialized && (this._popStateInProgress || this._blockHashChange > 0);
				}

				get initialBookmark() {
					return this._initialized ? this._initialBookmark : null;
				}

				get initialRotation() {
					return this._initialized ? this._initialRotation : null;
				}

				_pushOrReplaceState(destination, forceReplace = false) {
					const shouldReplace = forceReplace || !this._destination;
					const newState = {
						fingerprint: this._fingerprint,
						uid: shouldReplace ? this._uid : this._uid + 1,
						destination
					};

					this._updateInternalState(destination, newState.uid);

					let newUrl;

					if (this._updateUrl && destination?.hash) {
						const baseUrl = document.location.href.split('#')[0];

						if (!baseUrl.startsWith('file://')) {
							newUrl = `${baseUrl}#${destination.hash}`;
						}
					}

					if (shouldReplace) {
						window.history.replaceState(newState, '', newUrl);
					} else {
						window.history.pushState(newState, '', newUrl);
					}
				}

				_tryPushCurrentPosition(temporary = false) {
					if (!this._position) {
						return;
					}

					let position = this._position;

					if (temporary) {
						position = Object.assign(Object.create(null), this._position);
						position.temporary = true;
					}

					if (!this._destination) {
						this._pushOrReplaceState(position);

						return;
					}

					if (this._destination.temporary) {
						this._pushOrReplaceState(position, true);

						return;
					}

					if (this._destination.hash === position.hash) {
						return;
					}

					if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {
						return;
					}

					let forceReplace = false;

					if (this._destination.page >= position.first && this._destination.page <= position.page) {
						if (this._destination.dest !== undefined || !this._destination.first) {
							return;
						}

						forceReplace = true;
					}

					this._pushOrReplaceState(position, forceReplace);
				}

				_isValidPage(val) {
					return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount;
				}

				_isValidState(state, checkReload = false) {
					if (!state) {
						return false;
					}

					if (state.fingerprint !== this._fingerprint) {
						if (checkReload) {
							if (typeof state.fingerprint !== 'string' || state.fingerprint.length !== this._fingerprint.length) {
								return false;
							}

							const [perfEntry] = performance.getEntriesByType('navigation');

							if (perfEntry?.type !== 'reload') {
								return false;
							}
						} else {
							return false;
						}
					}

					if (!Number.isInteger(state.uid) || state.uid < 0) {
						return false;
					}

					if (state.destination === null || typeof state.destination !== 'object') {
						return false;
					}

					return true;
				}

				_updateInternalState(destination, uid, removeTemporary = false) {
					if (this._updateViewareaTimeout) {
						clearTimeout(this._updateViewareaTimeout);
						this._updateViewareaTimeout = null;
					}

					if (removeTemporary && destination?.temporary) {
						delete destination.temporary;
					}

					this._destination = destination;
					this._uid = uid;
					this._maxUid = Math.max(this._maxUid, uid);
					this._numPositionUpdates = 0;
				}

				_parseCurrentHash(checkNameddest = false) {
					const hash = unescape(getCurrentHash()).substring(1);
					const params = (0, _ui_utils.parseQueryString)(hash);
					const nameddest = params.get('nameddest') || '';
					let page = params.get('page') | 0;

					if (!this._isValidPage(page) || (checkNameddest && nameddest.length > 0)) {
						page = null;
					}

					return {
						hash,
						page,
						rotation: this.linkService.rotation
					};
				}

				_updateViewarea({ location }) {
					if (this._updateViewareaTimeout) {
						clearTimeout(this._updateViewareaTimeout);
						this._updateViewareaTimeout = null;
					}

					this._position = {
						hash: location.pdfOpenParams.substring(1),
						page: this.linkService.page,
						first: location.pageNumber,
						rotation: location.rotation
					};

					if (this._popStateInProgress) {
						return;
					}

					if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {
						this._numPositionUpdates++;
					}

					if (UPDATE_VIEWAREA_TIMEOUT > 0) {
						this._updateViewareaTimeout = setTimeout(() => {
							if (!this._popStateInProgress) {
								this._tryPushCurrentPosition(true);
							}

							this._updateViewareaTimeout = null;
						}, UPDATE_VIEWAREA_TIMEOUT);
					}
				}

				_popState({ state }) {
					const newHash = getCurrentHash(),
						hashChanged = this._currentHash !== newHash;
					this._currentHash = newHash;

					if (!state) {
						this._uid++;

						const { hash, page, rotation } = this._parseCurrentHash();

						this._pushOrReplaceState(
							{
								hash,
								page,
								rotation
							},
							true
						);

						return;
					}

					if (!this._isValidState(state)) {
						return;
					}

					this._popStateInProgress = true;

					if (hashChanged) {
						this._blockHashChange++;
						(0, _event_utils.waitOnEventOrTimeout)({
							target: window,
							name: 'hashchange',
							delay: HASH_CHANGE_TIMEOUT
						}).then(() => {
							this._blockHashChange--;
						});
					}

					const destination = state.destination;

					this._updateInternalState(destination, state.uid, true);

					if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
						this.linkService.rotation = destination.rotation;
					}

					if (destination.dest) {
						this.linkService.goToDestination(destination.dest);
					} else if (destination.hash) {
						this.linkService.setHash(destination.hash);
					} else if (destination.page) {
						this.linkService.page = destination.page;
					}

					Promise.resolve().then(() => {
						this._popStateInProgress = false;
					});
				}

				_pageHide() {
					if (!this._destination || this._destination.temporary) {
						this._tryPushCurrentPosition();
					}
				}

				_bindEvents() {
					if (this._boundEvents) {
						return;
					}

					this._boundEvents = {
						updateViewarea: this._updateViewarea.bind(this),
						popState: this._popState.bind(this),
						pageHide: this._pageHide.bind(this)
					};

					this.eventBus._on('updateviewarea', this._boundEvents.updateViewarea);

					window.addEventListener('popstate', this._boundEvents.popState);
					window.addEventListener('pagehide', this._boundEvents.pageHide);
				}

				_unbindEvents() {
					if (!this._boundEvents) {
						return;
					}

					this.eventBus._off('updateviewarea', this._boundEvents.updateViewarea);

					window.removeEventListener('popstate', this._boundEvents.popState);
					window.removeEventListener('pagehide', this._boundEvents.pageHide);
					this._boundEvents = null;
				}
			}

			exports.PDFHistory = PDFHistory;

			function isDestHashesEqual(destHash, pushHash) {
				if (typeof destHash !== 'string' || typeof pushHash !== 'string') {
					return false;
				}

				if (destHash === pushHash) {
					return true;
				}

				const nameddest = (0, _ui_utils.parseQueryString)(destHash).get('nameddest');

				if (nameddest === pushHash) {
					return true;
				}

				return false;
			}

			function isDestArraysEqual(firstDest, secondDest) {
				function isEntryEqual(first, second) {
					if (typeof first !== typeof second) {
						return false;
					}

					if (Array.isArray(first) || Array.isArray(second)) {
						return false;
					}

					if (first !== null && typeof first === 'object' && second !== null) {
						if (Object.keys(first).length !== Object.keys(second).length) {
							return false;
						}

						for (const key in first) {
							if (!isEntryEqual(first[key], second[key])) {
								return false;
							}
						}

						return true;
					}

					return first === second || (Number.isNaN(first) && Number.isNaN(second));
				}

				if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
					return false;
				}

				if (firstDest.length !== secondDest.length) {
					return false;
				}

				for (let i = 0, ii = firstDest.length; i < ii; i++) {
					if (!isEntryEqual(firstDest[i], secondDest[i])) {
						return false;
					}
				}

				return true;
			}

			/***/
		},
		/* 18 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFLayerViewer = void 0;

			var _base_tree_viewer = __webpack_require__(12);

			class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
				constructor(options) {
					super(options);
					this.l10n = options.l10n;

					this.eventBus._on('resetlayers', this._resetLayers.bind(this));

					this.eventBus._on('togglelayerstree', this._toggleAllTreeItems.bind(this));
				}

				reset() {
					super.reset();
					this._optionalContentConfig = null;
				}

				_dispatchEvent(layersCount) {
					this.eventBus.dispatch('layersloaded', {
						source: this,
						layersCount
					});
				}

				_bindLink(element, { groupId, input }) {
					const setVisibility = () => {
						this._optionalContentConfig.setVisibility(groupId, input.checked);

						this.eventBus.dispatch('optionalcontentconfig', {
							source: this,
							promise: Promise.resolve(this._optionalContentConfig)
						});
					};

					element.onclick = evt => {
						if (evt.target === input) {
							setVisibility();
							return true;
						} else if (evt.target !== element) {
							return true;
						}

						input.checked = !input.checked;
						setVisibility();
						return false;
					};
				}

				async _setNestedName(element, { name = null }) {
					if (typeof name === 'string') {
						element.textContent = this._normalizeTextContent(name);
						return;
					}

					element.textContent = await this.l10n.get('additional_layers');
					element.style.fontStyle = 'italic';
				}

				_addToggleButton(div, { name = null }) {
					super._addToggleButton(div, name === null);
				}

				_toggleAllTreeItems() {
					if (!this._optionalContentConfig) {
						return;
					}

					super._toggleAllTreeItems();
				}

				render({ optionalContentConfig, pdfDocument }) {
					if (this._optionalContentConfig) {
						this.reset();
					}

					this._optionalContentConfig = optionalContentConfig || null;
					this._pdfDocument = pdfDocument || null;
					const groups = optionalContentConfig?.getOrder();

					if (!groups) {
						this._dispatchEvent(0);

						return;
					}

					const fragment = document.createDocumentFragment(),
						queue = [
							{
								parent: fragment,
								groups
							}
						];
					let layersCount = 0,
						hasAnyNesting = false;

					while (queue.length > 0) {
						const levelData = queue.shift();

						for (const groupId of levelData.groups) {
							const div = document.createElement('div');
							div.className = 'treeItem';
							const element = document.createElement('a');
							div.appendChild(element);

							if (typeof groupId === 'object') {
								hasAnyNesting = true;

								this._addToggleButton(div, groupId);

								this._setNestedName(element, groupId);

								const itemsDiv = document.createElement('div');
								itemsDiv.className = 'treeItems';
								div.appendChild(itemsDiv);
								queue.push({
									parent: itemsDiv,
									groups: groupId.order
								});
							} else {
								const group = optionalContentConfig.getGroup(groupId);
								const input = document.createElement('input');

								this._bindLink(element, {
									groupId,
									input
								});

								input.type = 'checkbox';
								input.id = groupId;
								input.checked = group.visible;
								const label = document.createElement('label');
								label.setAttribute('for', groupId);
								label.textContent = this._normalizeTextContent(group.name);
								element.appendChild(input);
								element.appendChild(label);
								layersCount++;
							}

							levelData.parent.appendChild(div);
						}
					}

					this._finishRendering(fragment, layersCount, hasAnyNesting);
				}

				async _resetLayers() {
					if (!this._optionalContentConfig) {
						return;
					}

					const optionalContentConfig = await this._pdfDocument.getOptionalContentConfig();
					this.eventBus.dispatch('optionalcontentconfig', {
						source: this,
						promise: Promise.resolve(optionalContentConfig)
					});
					this.render({
						optionalContentConfig,
						pdfDocument: this._pdfDocument
					});
				}
			}

			exports.PDFLayerViewer = PDFLayerViewer;

			/***/
		},
		/* 19 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFOutlineViewer = void 0;

			var _base_tree_viewer = __webpack_require__(12);

			var _pdfjsLib = __webpack_require__(5);

			var _ui_utils = __webpack_require__(3);

			class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
				constructor(options) {
					super(options);
					this.linkService = options.linkService;

					this.eventBus._on('toggleoutlinetree', this._toggleAllTreeItems.bind(this));

					this.eventBus._on('currentoutlineitem', this._currentOutlineItem.bind(this));

					this.eventBus._on('pagechanging', evt => {
						this._currentPageNumber = evt.pageNumber;
					});

					this.eventBus._on('pagesloaded', evt => {
						this._isPagesLoaded = !!evt.pagesCount;

						if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) {
							this._currentOutlineItemCapability.resolve(this._isPagesLoaded);
						}
					});

					this.eventBus._on('sidebarviewchanged', evt => {
						this._sidebarView = evt.view;
					});
				}

				reset() {
					super.reset();
					this._outline = null;
					this._pageNumberToDestHashCapability = null;
					this._currentPageNumber = 1;
					this._isPagesLoaded = null;

					if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) {
						this._currentOutlineItemCapability.resolve(false);
					}

					this._currentOutlineItemCapability = null;
				}

				_dispatchEvent(outlineCount) {
					this._currentOutlineItemCapability = (0, _pdfjsLib.createPromiseCapability)();

					if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) {
						this._currentOutlineItemCapability.resolve(false);
					} else if (this._isPagesLoaded !== null) {
						this._currentOutlineItemCapability.resolve(this._isPagesLoaded);
					}

					this.eventBus.dispatch('outlineloaded', {
						source: this,
						outlineCount,
						currentOutlineItemPromise: this._currentOutlineItemCapability.promise
					});
				}

				_bindLink(element, { url, newWindow, dest }) {
					const { linkService } = this;

					if (url) {
						linkService.addLinkAttributes(element, url, newWindow);
						return;
					}

					element.href = linkService.getDestinationHash(dest);

					element.onclick = evt => {
						this._updateCurrentTreeItem(evt.target.parentNode);

						if (dest) {
							linkService.goToDestination(dest);
						}

						return false;
					};
				}

				_setStyles(element, { bold, italic }) {
					if (bold) {
						element.style.fontWeight = 'bold';
					}

					if (italic) {
						element.style.fontStyle = 'italic';
					}
				}

				_addToggleButton(div, { count, items }) {
					let hidden = false;

					if (count < 0) {
						let totalCount = items.length;

						if (totalCount > 0) {
							const queue = [...items];

							while (queue.length > 0) {
								const { count: nestedCount, items: nestedItems } = queue.shift();

								if (nestedCount > 0 && nestedItems.length > 0) {
									totalCount += nestedItems.length;
									queue.push(...nestedItems);
								}
							}
						}

						if (Math.abs(count) === totalCount) {
							hidden = true;
						}
					}

					super._addToggleButton(div, hidden);
				}

				_toggleAllTreeItems() {
					if (!this._outline) {
						return;
					}

					super._toggleAllTreeItems();
				}

				render({ outline, pdfDocument }) {
					if (this._outline) {
						this.reset();
					}

					this._outline = outline || null;
					this._pdfDocument = pdfDocument || null;

					if (!outline) {
						this._dispatchEvent(0);

						return;
					}

					const fragment = document.createDocumentFragment();
					const queue = [
						{
							parent: fragment,
							items: outline
						}
					];
					let outlineCount = 0,
						hasAnyNesting = false;

					while (queue.length > 0) {
						const levelData = queue.shift();

						for (const item of levelData.items) {
							const div = document.createElement('div');
							div.className = 'treeItem';
							const element = document.createElement('a');

							this._bindLink(element, item);

							this._setStyles(element, item);

							element.textContent = this._normalizeTextContent(item.title);
							div.appendChild(element);

							if (item.items.length > 0) {
								hasAnyNesting = true;

								this._addToggleButton(div, item);

								const itemsDiv = document.createElement('div');
								itemsDiv.className = 'treeItems';
								div.appendChild(itemsDiv);
								queue.push({
									parent: itemsDiv,
									items: item.items
								});
							}

							levelData.parent.appendChild(div);
							outlineCount++;
						}
					}

					this._finishRendering(fragment, outlineCount, hasAnyNesting);
				}

				async _currentOutlineItem() {
					if (!this._isPagesLoaded) {
						throw new Error('_currentOutlineItem: All pages have not been loaded.');
					}

					if (!this._outline || !this._pdfDocument) {
						return;
					}

					const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument);

					if (!pageNumberToDestHash) {
						return;
					}

					this._updateCurrentTreeItem(null);

					if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) {
						return;
					}

					for (let i = this._currentPageNumber; i > 0; i--) {
						const destHash = pageNumberToDestHash.get(i);

						if (!destHash) {
							continue;
						}

						const linkElement = this.container.querySelector(`a[href="${destHash}"]`);

						if (!linkElement) {
							continue;
						}

						this._scrollToCurrentTreeItem(linkElement.parentNode);

						break;
					}
				}

				async _getPageNumberToDestHash(pdfDocument) {
					if (this._pageNumberToDestHashCapability) {
						return this._pageNumberToDestHashCapability.promise;
					}

					this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)();
					const pageNumberToDestHash = new Map(),
						pageNumberNesting = new Map();
					const queue = [
						{
							nesting: 0,
							items: this._outline
						}
					];

					while (queue.length > 0) {
						const levelData = queue.shift(),
							currentNesting = levelData.nesting;

						for (const { dest, items } of levelData.items) {
							let explicitDest, pageNumber;

							if (typeof dest === 'string') {
								explicitDest = await pdfDocument.getDestination(dest);

								if (pdfDocument !== this._pdfDocument) {
									return null;
								}
							} else {
								explicitDest = dest;
							}

							if (Array.isArray(explicitDest)) {
								const [destRef] = explicitDest;

								if (typeof destRef === 'object' && destRef !== null) {
									pageNumber = this.linkService._cachedPageNumber(destRef);

									if (!pageNumber) {
										try {
											pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;

											if (pdfDocument !== this._pdfDocument) {
												return null;
											}

											this.linkService.cachePageRef(pageNumber, destRef);
										} catch (ex) {}
									}
								} else if (Number.isInteger(destRef)) {
									pageNumber = destRef + 1;
								}

								if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) {
									const destHash = this.linkService.getDestinationHash(dest);
									pageNumberToDestHash.set(pageNumber, destHash);
									pageNumberNesting.set(pageNumber, currentNesting);
								}
							}

							if (items.length > 0) {
								queue.push({
									nesting: currentNesting + 1,
									items
								});
							}
						}
					}

					this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null);

					return this._pageNumberToDestHashCapability.promise;
				}
			}

			exports.PDFOutlineViewer = PDFOutlineViewer;

			/***/
		},
		/* 20 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFPresentationMode = void 0;

			var _ui_utils = __webpack_require__(3);

			const DELAY_BEFORE_HIDING_CONTROLS = 3000;
			const ACTIVE_SELECTOR = 'pdfPresentationMode';
			const CONTROLS_SELECTOR = 'pdfPresentationModeControls';
			const MOUSE_SCROLL_COOLDOWN_TIME = 50;
			const PAGE_SWITCH_THRESHOLD = 0.1;
			const SWIPE_MIN_DISTANCE_THRESHOLD = 50;
			const SWIPE_ANGLE_THRESHOLD = Math.PI / 6;

			class PDFPresentationMode {
				#state = _ui_utils.PresentationModeState.UNKNOWN;
				#args = null;

				constructor({ container, pdfViewer, eventBus }) {
					this.container = container;
					this.pdfViewer = pdfViewer;
					this.eventBus = eventBus;
					this.contextMenuOpen = false;
					this.mouseScrollTimeStamp = 0;
					this.mouseScrollDelta = 0;
					this.touchSwipeState = null;
				}

				async request() {
					const { container, pdfViewer } = this;

					if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) {
						return false;
					}

					this.#addFullscreenChangeListeners();
					this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING);
					const promise = container.requestFullscreen();
					this.#args = {
						pageNumber: pdfViewer.currentPageNumber,
						scaleValue: pdfViewer.currentScaleValue,
						scrollMode: pdfViewer.scrollMode,
						spreadMode: null
					};

					if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) {
						console.warn('Ignoring Spread modes when entering PresentationMode, ' + 'since the document may contain varying page sizes.');
						this.#args.spreadMode = pdfViewer.spreadMode;
					}

					try {
						await promise;
						return true;
					} catch (reason) {
						this.#removeFullscreenChangeListeners();
						this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL);
					}

					return false;
				}

				get active() {
					return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN;
				}

				#mouseWheel(evt) {
					if (!this.active) {
						return;
					}

					evt.preventDefault();
					const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
					const currentTime = Date.now();
					const storedTime = this.mouseScrollTimeStamp;

					if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
						return;
					}

					if ((this.mouseScrollDelta > 0 && delta < 0) || (this.mouseScrollDelta < 0 && delta > 0)) {
						this.#resetMouseScrollState();
					}

					this.mouseScrollDelta += delta;

					if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
						const totalDelta = this.mouseScrollDelta;
						this.#resetMouseScrollState();
						if (totalDelta > 0) {
							window.notifyPageChange(PDFViewerApplication.page - 1);
							this.pdfViewer.previousPage();
							this.mouseScrollTimeStamp = currentTime;
						} else {
							window.notifyPageChange(PDFViewerApplication.page + 1);
							this.pdfViewer.nextPage();
						}
					}
				}

				#notifyStateChange(state) {
					this.#state = state;
					this.eventBus.dispatch('presentationmodechanged', {
						source: this,
						state
					});
				}

				#enter() {
					this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN);
					this.container.classList.add(ACTIVE_SELECTOR);
					setTimeout(() => {
						this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE;

						if (this.#args.spreadMode !== null) {
							this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE;
						}

						this.pdfViewer.currentPageNumber = this.#args.pageNumber;
						this.pdfViewer.currentScaleValue = 'page-fit';
					}, 0);
					this.#addWindowListeners();
					this.#showControls();
					this.contextMenuOpen = false;
					window.getSelection().removeAllRanges();
				}

				#exit() {
					const pageNumber = this.pdfViewer.currentPageNumber;
					this.container.classList.remove(ACTIVE_SELECTOR);
					setTimeout(() => {
						this.#removeFullscreenChangeListeners();
						this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL);
						this.pdfViewer.scrollMode = this.#args.scrollMode;

						if (this.#args.spreadMode !== null) {
							this.pdfViewer.spreadMode = this.#args.spreadMode;
						}

						this.pdfViewer.currentScaleValue = this.#args.scaleValue;
						this.pdfViewer.currentPageNumber = pageNumber;
						this.#args = null;
					}, 0);
					this.#removeWindowListeners();
					this.#hideControls();
					this.#resetMouseScrollState();
					this.contextMenuOpen = false;
				}

				#mouseDown(evt) {
					if (this.contextMenuOpen) {
						this.contextMenuOpen = false;
						evt.preventDefault();
						return;
					}

					if (evt.button === 0) {
						const isInternalLink = evt.target.href && evt.target.classList.contains('internalLink');

						if (!isInternalLink) {
							evt.preventDefault();

							if (evt.shiftKey) {
								window.notifyPageChange(PDFViewerApplication.page - 1);
								this.pdfViewer.previousPage();
							} else {
								window.notifyPageChange(PDFViewerApplication.page + 1);
								this.pdfViewer.nextPage();
							}
						}
					}
				}

				#contextMenu() {
					this.contextMenuOpen = true;
				}

				#showControls() {
					if (this.controlsTimeout) {
						clearTimeout(this.controlsTimeout);
					} else {
						this.container.classList.add(CONTROLS_SELECTOR);
					}

					this.controlsTimeout = setTimeout(() => {
						this.container.classList.remove(CONTROLS_SELECTOR);
						delete this.controlsTimeout;
					}, DELAY_BEFORE_HIDING_CONTROLS);
				}

				#hideControls() {
					if (!this.controlsTimeout) {
						return;
					}

					clearTimeout(this.controlsTimeout);
					this.container.classList.remove(CONTROLS_SELECTOR);
					delete this.controlsTimeout;
				}

				#resetMouseScrollState() {
					this.mouseScrollTimeStamp = 0;
					this.mouseScrollDelta = 0;
				}

				#touchSwipe(evt) {
					if (!this.active) {
						return;
					}

					if (evt.touches.length > 1) {
						this.touchSwipeState = null;
						return;
					}

					switch (evt.type) {
						case 'touchstart':
							this.touchSwipeState = {
								startX: evt.touches[0].pageX,
								startY: evt.touches[0].pageY,
								endX: evt.touches[0].pageX,
								endY: evt.touches[0].pageY
							};
							break;

						case 'touchmove':
							if (this.touchSwipeState === null) {
								return;
							}

							this.touchSwipeState.endX = evt.touches[0].pageX;
							this.touchSwipeState.endY = evt.touches[0].pageY;
							evt.preventDefault();
							break;

						case 'touchend':
							if (this.touchSwipeState === null) {
								return;
							}

							let delta = 0;
							const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;
							const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;
							const absAngle = Math.abs(Math.atan2(dy, dx));

							if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) {
								delta = dx;
							} else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) {
								delta = dy;
							}

							if (delta > 0) {
								window.notifyPageChange(PDFViewerApplication.page - 1);
								this.pdfViewer.previousPage();
							} else if (delta < 0) {
								window.notifyPageChange(PDFViewerApplication.page + 1);
								this.pdfViewer.nextPage();
							}

							break;
					}
				}

				#addWindowListeners() {
					this.showControlsBind = this.#showControls.bind(this);
					this.mouseDownBind = this.#mouseDown.bind(this);
					this.mouseWheelBind = this.#mouseWheel.bind(this);
					this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this);
					this.contextMenuBind = this.#contextMenu.bind(this);
					this.touchSwipeBind = this.#touchSwipe.bind(this);
					window.addEventListener('mousemove', this.showControlsBind);
					window.addEventListener('mousedown', this.mouseDownBind);
					window.addEventListener('wheel', this.mouseWheelBind, {
						passive: false
					});
					window.addEventListener('keydown', this.resetMouseScrollStateBind);
					window.addEventListener('contextmenu', this.contextMenuBind);
					window.addEventListener('touchstart', this.touchSwipeBind);
					window.addEventListener('touchmove', this.touchSwipeBind);
					window.addEventListener('touchend', this.touchSwipeBind);
				}

				#removeWindowListeners() {
					window.removeEventListener('mousemove', this.showControlsBind);
					window.removeEventListener('mousedown', this.mouseDownBind);
					window.removeEventListener('wheel', this.mouseWheelBind, {
						passive: false
					});
					window.removeEventListener('keydown', this.resetMouseScrollStateBind);
					window.removeEventListener('contextmenu', this.contextMenuBind);
					window.removeEventListener('touchstart', this.touchSwipeBind);
					window.removeEventListener('touchmove', this.touchSwipeBind);
					window.removeEventListener('touchend', this.touchSwipeBind);
					delete this.showControlsBind;
					delete this.mouseDownBind;
					delete this.mouseWheelBind;
					delete this.resetMouseScrollStateBind;
					delete this.contextMenuBind;
					delete this.touchSwipeBind;
				}

				#fullscreenChange() {
					if (document.fullscreenElement) {
						this.#enter();
					} else {
						this.#exit();
					}
				}

				#addFullscreenChangeListeners() {
					this.fullscreenChangeBind = this.#fullscreenChange.bind(this);
					window.addEventListener('fullscreenchange', this.fullscreenChangeBind);
				}

				#removeFullscreenChangeListeners() {
					window.removeEventListener('fullscreenchange', this.fullscreenChangeBind);
					delete this.fullscreenChangeBind;
				}
			}

			exports.PDFPresentationMode = PDFPresentationMode;

			/***/
		},
		/* 21 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFRenderingQueue = void 0;

			var _pdfjsLib = __webpack_require__(5);

			var _ui_utils = __webpack_require__(3);

			const CLEANUP_TIMEOUT = 30000;

			class PDFRenderingQueue {
				constructor() {
					this.pdfViewer = null;
					this.pdfThumbnailViewer = null;
					this.onIdle = null;
					this.highestPriorityPage = null;
					this.idleTimeout = null;
					this.isThumbnailViewEnabled = false;
				}

				setViewer(pdfViewer) {
					this.pdfViewer = pdfViewer;
				}

				setThumbnailViewer(pdfThumbnailViewer) {
					this.pdfThumbnailViewer = pdfThumbnailViewer;
				}

				isHighestPriority(view) {
					return this.highestPriorityPage === view.renderingId;
				}

				hasViewer() {
					return !!this.pdfViewer;
				}

				renderHighestPriority(currentlyVisiblePages) {
					if (this.idleTimeout) {
						clearTimeout(this.idleTimeout);
						this.idleTimeout = null;
					}

					if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {
						return;
					}

					if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) {
						return;
					}

					if (this.onIdle) {
						this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);
					}
				}

				getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {
					const visibleViews = visible.views,
						numVisible = visibleViews.length;

					if (numVisible === 0) {
						return null;
					}

					for (let i = 0; i < numVisible; i++) {
						const view = visibleViews[i].view;

						if (!this.isViewFinished(view)) {
							return view;
						}
					}

					const firstId = visible.first.id,
						lastId = visible.last.id;

					if (lastId - firstId + 1 > numVisible) {
						const visibleIds = visible.ids;

						for (let i = 1, ii = lastId - firstId; i < ii; i++) {
							const holeId = scrolledDown ? firstId + i : lastId - i;

							if (visibleIds.has(holeId)) {
								continue;
							}

							const holeView = views[holeId - 1];

							if (!this.isViewFinished(holeView)) {
								return holeView;
							}
						}
					}

					let preRenderIndex = scrolledDown ? lastId : firstId - 2;
					let preRenderView = views[preRenderIndex];

					if (preRenderView && !this.isViewFinished(preRenderView)) {
						return preRenderView;
					}

					if (preRenderExtra) {
						preRenderIndex += scrolledDown ? 1 : -1;
						preRenderView = views[preRenderIndex];

						if (preRenderView && !this.isViewFinished(preRenderView)) {
							return preRenderView;
						}
					}

					return null;
				}

				isViewFinished(view) {
					return view.renderingState === _ui_utils.RenderingStates.FINISHED;
				}

				renderView(view) {
					switch (view.renderingState) {
						case _ui_utils.RenderingStates.FINISHED:
							return false;

						case _ui_utils.RenderingStates.PAUSED:
							this.highestPriorityPage = view.renderingId;
							view.resume();
							break;

						case _ui_utils.RenderingStates.RUNNING:
							this.highestPriorityPage = view.renderingId;
							break;

						case _ui_utils.RenderingStates.INITIAL:
							this.highestPriorityPage = view.renderingId;
							view.draw()
								.finally(() => {
									this.renderHighestPriority();
								})
								.catch(reason => {
									if (reason instanceof _pdfjsLib.RenderingCancelledException) {
										return;
									}

									console.error(`renderView: "${reason}"`);
								});
							break;
					}

					return true;
				}
			}

			exports.PDFRenderingQueue = PDFRenderingQueue;

			/***/
		},
		/* 22 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFScriptingManager = void 0;

			var _ui_utils = __webpack_require__(3);

			var _pdfjsLib = __webpack_require__(5);

			class PDFScriptingManager {
				constructor({ eventBus, sandboxBundleSrc = null, scriptingFactory = null }) {
					this._pdfDocument = null;
					this._pdfViewer = null;
					this._closeCapability = null;
					this._destroyCapability = null;
					this._scripting = null;
					this._mouseState = Object.create(null);
					this._ready = false;
					this._eventBus = eventBus;
					this._sandboxBundleSrc = sandboxBundleSrc;
					this._scriptingFactory = scriptingFactory;
				}

				setViewer(pdfViewer) {
					this._pdfViewer = pdfViewer;
				}

				async setDocument(pdfDocument) {
					if (this._pdfDocument) {
						await this._destroyScripting();
					}

					this._pdfDocument = pdfDocument;

					if (!pdfDocument) {
						return;
					}

					const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]);

					if (!objects && !docActions) {
						await this._destroyScripting();
						return;
					}

					if (pdfDocument !== this._pdfDocument) {
						return;
					}

					try {
						this._scripting = this._createScripting();
					} catch (error) {
						console.error(`PDFScriptingManager.setDocument: "${error?.message}".`);
						await this._destroyScripting();
						return;
					}

					this._internalEvents.set('updatefromsandbox', event => {
						if (event?.source !== window) {
							return;
						}

						this._updateFromSandbox(event.detail);
					});

					this._internalEvents.set('dispatcheventinsandbox', event => {
						this._scripting?.dispatchEventInSandbox(event.detail);
					});

					this._internalEvents.set('pagechanging', ({ pageNumber, previous }) => {
						if (pageNumber === previous) {
							return;
						}

						this._dispatchPageClose(previous);

						this._dispatchPageOpen(pageNumber);
					});

					this._internalEvents.set('pagerendered', ({ pageNumber }) => {
						if (!this._pageOpenPending.has(pageNumber)) {
							return;
						}

						if (pageNumber !== this._pdfViewer.currentPageNumber) {
							return;
						}

						this._dispatchPageOpen(pageNumber);
					});

					this._internalEvents.set('pagesdestroy', async event => {
						await this._dispatchPageClose(this._pdfViewer.currentPageNumber);
						await this._scripting?.dispatchEventInSandbox({
							id: 'doc',
							name: 'WillClose'
						});
						this._closeCapability?.resolve();
					});

					this._domEvents.set('mousedown', event => {
						this._mouseState.isDown = true;
					});

					this._domEvents.set('mouseup', event => {
						this._mouseState.isDown = false;
					});

					for (const [name, listener] of this._internalEvents) {
						this._eventBus._on(name, listener);
					}

					for (const [name, listener] of this._domEvents) {
						window.addEventListener(name, listener, true);
					}

					await this._scripting?.dispatchEventInSandbox({
						id: 'doc',
						name: 'Open'
					});
					await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true);
					Promise.resolve().then(() => {
						if (pdfDocument === this._pdfDocument) {
							this._ready = true;
						}
					});
				}

				async dispatchWillSave(detail) {
					return this._scripting?.dispatchEventInSandbox({
						id: 'doc',
						name: 'WillSave'
					});
				}

				async dispatchDidSave(detail) {
					return this._scripting?.dispatchEventInSandbox({
						id: 'doc',
						name: 'DidSave'
					});
				}

				get mouseState() {
					return this._mouseState;
				}

				get destroyPromise() {
					return this._destroyCapability?.promise || null;
				}

				get ready() {
					return this._ready;
				}

				get _internalEvents() {
					return (0, _pdfjsLib.shadow)(this, '_internalEvents', new Map());
				}

				get _domEvents() {
					return (0, _pdfjsLib.shadow)(this, '_domEvents', new Map());
				}

				get _pageOpenPending() {
					return (0, _pdfjsLib.shadow)(this, '_pageOpenPending', new Set());
				}

				get _visitedPages() {
					return (0, _pdfjsLib.shadow)(this, '_visitedPages', new Map());
				}

				async _updateFromSandbox(detail) {
					const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode;
					const { id, siblings, command, value } = detail;

					if (!id) {
						switch (command) {
							case 'clear':
								console.clear();
								break;

							case 'error':
								console.error(value);
								break;

							case 'layout':
								if (isInPresentationMode) {
									return;
								}

								const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value);
								this._pdfViewer.spreadMode = modes.spreadMode;
								break;

							case 'page-num':
								this._pdfViewer.currentPageNumber = value + 1;
								break;

							case 'zoom':
								if (isInPresentationMode) {
									return;
								}

								this._pdfViewer.currentScaleValue = value;
								break;

							case 'SaveAs':
								this._eventBus.dispatch('save', {
									source: this
								});

								break;

							case 'FirstPage':
								window.notifyPageChange(1);
								this._pdfViewer.currentPageNumber = 1;
								break;

							case 'LastPage':
								window.notifyPageChange(this._pdfViewer.pagesCount);
								this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount;
								break;

							case 'NextPage':
								window.notifyPageChange(PDFViewerApplication.page + 1);
								this._pdfViewer.nextPage();

								break;

							case 'PrevPage':
								window.notifyPageChange(PDFViewerApplication.page - 1);
								this._pdfViewer.previousPage();

								break;

							case 'ZoomViewIn':
								if (isInPresentationMode) {
									return;
								}

								this._pdfViewer.increaseScale();

								break;

							case 'ZoomViewOut':
								if (isInPresentationMode) {
									return;
								}

								this._pdfViewer.decreaseScale();

								break;
						}

						return;
					}

					if (isInPresentationMode) {
						if (detail.focus) {
							return;
						}
					}

					delete detail.id;
					delete detail.siblings;
					const ids = siblings ? [id, ...siblings] : [id];

					for (const elementId of ids) {
						const element = document.getElementById(elementId);

						if (element) {
							element.dispatchEvent(
								new CustomEvent('updatefromsandbox', {
									detail
								})
							);
						} else {
							this._pdfDocument?.annotationStorage.setValue(elementId, detail);
						}
					}
				}

				async _dispatchPageOpen(pageNumber, initialize = false) {
					const pdfDocument = this._pdfDocument,
						visitedPages = this._visitedPages;

					if (initialize) {
						this._closeCapability = (0, _pdfjsLib.createPromiseCapability)();
					}

					if (!this._closeCapability) {
						return;
					}

					const pageView = this._pdfViewer.getPageView(pageNumber - 1);

					if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) {
						this._pageOpenPending.add(pageNumber);

						return;
					}

					this._pageOpenPending.delete(pageNumber);

					const actionsPromise = (async () => {
						const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null);

						if (pdfDocument !== this._pdfDocument) {
							return;
						}

						await this._scripting?.dispatchEventInSandbox({
							id: 'page',
							name: 'PageOpen',
							pageNumber,
							actions
						});
					})();

					visitedPages.set(pageNumber, actionsPromise);
				}

				async _dispatchPageClose(pageNumber) {
					const pdfDocument = this._pdfDocument,
						visitedPages = this._visitedPages;

					if (!this._closeCapability) {
						return;
					}

					if (this._pageOpenPending.has(pageNumber)) {
						return;
					}

					const actionsPromise = visitedPages.get(pageNumber);

					if (!actionsPromise) {
						return;
					}

					visitedPages.set(pageNumber, null);
					await actionsPromise;

					if (pdfDocument !== this._pdfDocument) {
						return;
					}

					await this._scripting?.dispatchEventInSandbox({
						id: 'page',
						name: 'PageClose',
						pageNumber
					});
				}

				_createScripting() {
					this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)();

					if (this._scripting) {
						throw new Error('_createScripting: Scripting already exists.');
					}

					if (this._scriptingFactory) {
						return this._scriptingFactory.createScripting({
							sandboxBundleSrc: this._sandboxBundleSrc
						});
					}

					throw new Error('_createScripting: Cannot create scripting.');
				}

				async _destroyScripting() {
					if (!this._scripting) {
						this._pdfDocument = null;
						this._destroyCapability?.resolve();
						return;
					}

					if (this._closeCapability) {
						await Promise.race([
							this._closeCapability.promise,
							new Promise(resolve => {
								setTimeout(resolve, 1000);
							})
						]).catch(reason => {});
						this._closeCapability = null;
					}

					this._pdfDocument = null;

					try {
						await this._scripting.destroySandbox();
					} catch (ex) {}

					for (const [name, listener] of this._internalEvents) {
						this._eventBus._off(name, listener);
					}

					this._internalEvents.clear();

					for (const [name, listener] of this._domEvents) {
						window.removeEventListener(name, listener, true);
					}

					this._domEvents.clear();

					this._pageOpenPending.clear();

					this._visitedPages.clear();

					this._scripting = null;
					delete this._mouseState.isDown;
					this._ready = false;
					this._destroyCapability?.resolve();
				}
			}

			exports.PDFScriptingManager = PDFScriptingManager;

			/***/
		},
		/* 23 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFSidebar = void 0;

			var _ui_utils = __webpack_require__(3);

			const UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';

			class PDFSidebar {
				constructor({ elements, pdfViewer, pdfThumbnailViewer, eventBus, l10n }) {
					this.isOpen = false;
					this.active = _ui_utils.SidebarView.THUMBS;
					this.isInitialViewSet = false;
					this.onToggled = null;
					this.pdfViewer = pdfViewer;
					this.pdfThumbnailViewer = pdfThumbnailViewer;
					this.outerContainer = elements.outerContainer;
					this.sidebarContainer = elements.sidebarContainer;
					this.toggleButton = elements.toggleButton;
					this.thumbnailButton = elements.thumbnailButton;
					this.outlineButton = elements.outlineButton;
					this.attachmentsButton = elements.attachmentsButton;
					this.layersButton = elements.layersButton;
					this.thumbnailView = elements.thumbnailView;
					this.outlineView = elements.outlineView;
					this.attachmentsView = elements.attachmentsView;
					this.layersView = elements.layersView;
					this._outlineOptionsContainer = elements.outlineOptionsContainer;
					this._currentOutlineItemButton = elements.currentOutlineItemButton;
					this.eventBus = eventBus;
					this.l10n = l10n;

					this._addEventListeners();
				}

				reset() {
					this.isInitialViewSet = false;

					this._hideUINotification(true);

					this.switchView(_ui_utils.SidebarView.THUMBS);
					this.outlineButton.disabled = false;
					this.attachmentsButton.disabled = false;
					this.layersButton.disabled = false;
					this._currentOutlineItemButton.disabled = true;
				}

				get visibleView() {
					return this.isOpen ? this.active : _ui_utils.SidebarView.NONE;
				}

				get isThumbnailViewVisible() {
					return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS;
				}

				get isOutlineViewVisible() {
					return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE;
				}

				get isAttachmentsViewVisible() {
					return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS;
				}

				get isLayersViewVisible() {
					return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS;
				}

				setInitialView(view = _ui_utils.SidebarView.NONE) {
					if (this.isInitialViewSet) {
						return;
					}

					this.isInitialViewSet = true;

					if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) {
						this._dispatchEvent();

						return;
					}

					if (!this._switchView(view, true)) {
						this._dispatchEvent();
					}
				}

				switchView(view, forceOpen = false) {
					this._switchView(view, forceOpen);
				}

				_switchView(view, forceOpen = false) {
					const isViewChanged = view !== this.active;
					let shouldForceRendering = false;

					switch (view) {
						case _ui_utils.SidebarView.NONE:
							if (this.isOpen) {
								this.close();
								return true;
							}

							return false;

						case _ui_utils.SidebarView.THUMBS:
							if (this.isOpen && isViewChanged) {
								shouldForceRendering = true;
							}

							break;

						case _ui_utils.SidebarView.OUTLINE:
							if (this.outlineButton.disabled) {
								return false;
							}

							break;

						case _ui_utils.SidebarView.ATTACHMENTS:
							if (this.attachmentsButton.disabled) {
								return false;
							}

							break;

						case _ui_utils.SidebarView.LAYERS:
							if (this.layersButton.disabled) {
								return false;
							}

							break;

						default:
							console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`);
							return false;
					}

					this.active = view;
					const isThumbs = view === _ui_utils.SidebarView.THUMBS,
						isOutline = view === _ui_utils.SidebarView.OUTLINE,
						isAttachments = view === _ui_utils.SidebarView.ATTACHMENTS,
						isLayers = view === _ui_utils.SidebarView.LAYERS;
					this.thumbnailButton.classList.toggle('toggled', isThumbs);
					this.outlineButton.classList.toggle('toggled', isOutline);
					this.attachmentsButton.classList.toggle('toggled', isAttachments);
					this.layersButton.classList.toggle('toggled', isLayers);
					this.thumbnailButton.setAttribute('aria-checked', isThumbs);
					this.outlineButton.setAttribute('aria-checked', isOutline);
					this.attachmentsButton.setAttribute('aria-checked', isAttachments);
					this.layersButton.setAttribute('aria-checked', isLayers);
					this.thumbnailView.classList.toggle('hidden', !isThumbs);
					this.outlineView.classList.toggle('hidden', !isOutline);
					this.attachmentsView.classList.toggle('hidden', !isAttachments);
					this.layersView.classList.toggle('hidden', !isLayers);

					this._outlineOptionsContainer.classList.toggle('hidden', !isOutline);

					if (forceOpen && !this.isOpen) {
						this.open();
						return true;
					}

					if (shouldForceRendering) {
						this._updateThumbnailViewer();

						this._forceRendering();
					}

					if (isViewChanged) {
						this._dispatchEvent();
					}

					return isViewChanged;
				}

				open() {
					if (this.isOpen) {
						return;
					}

					this.isOpen = true;
					this.toggleButton.classList.add('toggled');
					this.toggleButton.setAttribute('aria-expanded', 'true');
					this.outerContainer.classList.add('sidebarMoving', 'sidebarOpen');

					if (this.active === _ui_utils.SidebarView.THUMBS) {
						this._updateThumbnailViewer();
					}

					this._forceRendering();

					this._dispatchEvent();

					this._hideUINotification();
				}

				close() {
					if (!this.isOpen) {
						return;
					}

					this.isOpen = false;
					this.toggleButton.classList.remove('toggled');
					this.toggleButton.setAttribute('aria-expanded', 'false');
					this.outerContainer.classList.add('sidebarMoving');
					this.outerContainer.classList.remove('sidebarOpen');

					this._forceRendering();

					this._dispatchEvent();
				}

				toggle() {
					if (this.isOpen) {
						this.close();
					} else {
						this.open();
					}
				}

				_dispatchEvent() {
					this.eventBus.dispatch('sidebarviewchanged', {
						source: this,
						view: this.visibleView
					});
				}

				_forceRendering() {
					if (this.onToggled) {
						this.onToggled();
					} else {
						this.pdfViewer.forceRendering();
						this.pdfThumbnailViewer.forceRendering();
					}
				}

				_updateThumbnailViewer() {
					const { pdfViewer, pdfThumbnailViewer } = this;
					const pagesCount = pdfViewer.pagesCount;

					for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
						const pageView = pdfViewer.getPageView(pageIndex);

						if (pageView?.renderingState === _ui_utils.RenderingStates.FINISHED) {
							const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);
							thumbnailView.setImage(pageView);
						}
					}

					pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
				}

				_showUINotification() {
					this.l10n.get('toggle_sidebar_notification2.title').then(msg => {
						this.toggleButton.title = msg;
					});

					if (!this.isOpen) {
						this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
					}
				}

				_hideUINotification(reset = false) {
					if (this.isOpen || reset) {
						this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
					}

					if (reset) {
						this.l10n.get('toggle_sidebar.title').then(msg => {
							this.toggleButton.title = msg;
						});
					}
				}

				_addEventListeners() {
					this.sidebarContainer.addEventListener('transitionend', evt => {
						if (evt.target === this.sidebarContainer) {
							this.outerContainer.classList.remove('sidebarMoving');
						}
					});
					this.toggleButton.addEventListener('click', () => {
						this.toggle();
					});
					this.thumbnailButton.addEventListener('click', () => {
						this.switchView(_ui_utils.SidebarView.THUMBS);
					});
					this.outlineButton.addEventListener('click', () => {
						this.switchView(_ui_utils.SidebarView.OUTLINE);
					});
					this.outlineButton.addEventListener('dblclick', () => {
						this.eventBus.dispatch('toggleoutlinetree', {
							source: this
						});
					});
					this.attachmentsButton.addEventListener('click', () => {
						this.switchView(_ui_utils.SidebarView.ATTACHMENTS);
					});
					this.layersButton.addEventListener('click', () => {
						this.switchView(_ui_utils.SidebarView.LAYERS);
					});
					this.layersButton.addEventListener('dblclick', () => {
						this.eventBus.dispatch('resetlayers', {
							source: this
						});
					});

					this._currentOutlineItemButton.addEventListener('click', () => {
						this.eventBus.dispatch('currentoutlineitem', {
							source: this
						});
					});

					const onTreeLoaded = (count, button, view) => {
						button.disabled = !count;

						if (count) {
							this._showUINotification();
						} else if (this.active === view) {
							this.switchView(_ui_utils.SidebarView.THUMBS);
						}
					};

					this.eventBus._on('outlineloaded', evt => {
						onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE);
						evt.currentOutlineItemPromise.then(enabled => {
							if (!this.isInitialViewSet) {
								return;
							}

							this._currentOutlineItemButton.disabled = !enabled;
						});
					});

					this.eventBus._on('attachmentsloaded', evt => {
						onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS);
					});

					this.eventBus._on('layersloaded', evt => {
						onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS);
					});

					this.eventBus._on('presentationmodechanged', evt => {
						if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.isThumbnailViewVisible) {
							this._updateThumbnailViewer();
						}
					});
				}
			}

			exports.PDFSidebar = PDFSidebar;

			/***/
		},
		/* 24 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFSidebarResizer = void 0;
			const SIDEBAR_WIDTH_VAR = '--sidebar-width';
			const SIDEBAR_MIN_WIDTH = 200;
			const SIDEBAR_RESIZING_CLASS = 'sidebarResizing';

			class PDFSidebarResizer {
				constructor(options, eventBus, l10n) {
					this.isRTL = false;
					this.sidebarOpen = false;
					this.doc = document.documentElement;
					this._width = null;
					this._outerContainerWidth = null;
					this._boundEvents = Object.create(null);
					this.outerContainer = options.outerContainer;
					this.resizer = options.resizer;
					this.eventBus = eventBus;
					l10n.getDirection().then(dir => {
						this.isRTL = dir === 'rtl';
					});

					this._addEventListeners();
				}

				get outerContainerWidth() {
					return (this._outerContainerWidth ||= this.outerContainer.clientWidth);
				}

				_updateWidth(width = 0) {
					const maxWidth = Math.floor(this.outerContainerWidth / 2);

					if (width > maxWidth) {
						width = maxWidth;
					}

					if (width < SIDEBAR_MIN_WIDTH) {
						width = SIDEBAR_MIN_WIDTH;
					}

					if (width === this._width) {
						return false;
					}

					this._width = width;
					this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);
					return true;
				}

				_mouseMove(evt) {
					let width = evt.clientX;

					if (this.isRTL) {
						width = this.outerContainerWidth - width;
					}

					this._updateWidth(width);
				}

				_mouseUp(evt) {
					this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
					this.eventBus.dispatch('resize', {
						source: this
					});
					const _boundEvents = this._boundEvents;
					window.removeEventListener('mousemove', _boundEvents.mouseMove);
					window.removeEventListener('mouseup', _boundEvents.mouseUp);
				}

				_addEventListeners() {
					const _boundEvents = this._boundEvents;
					_boundEvents.mouseMove = this._mouseMove.bind(this);
					_boundEvents.mouseUp = this._mouseUp.bind(this);
					this.resizer.addEventListener('mousedown', evt => {
						if (evt.button !== 0) {
							return;
						}

						this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
						window.addEventListener('mousemove', _boundEvents.mouseMove);
						window.addEventListener('mouseup', _boundEvents.mouseUp);
					});

					this.eventBus._on('sidebarviewchanged', evt => {
						this.sidebarOpen = !!evt?.view;
					});

					this.eventBus._on('resize', evt => {
						if (evt?.source !== window) {
							return;
						}

						this._outerContainerWidth = null;

						if (!this._width) {
							return;
						}

						if (!this.sidebarOpen) {
							this._updateWidth(this._width);

							return;
						}

						this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);

						const updated = this._updateWidth(this._width);

						Promise.resolve().then(() => {
							this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);

							if (updated) {
								this.eventBus.dispatch('resize', {
									source: this
								});
							}
						});
					});
				}
			}

			exports.PDFSidebarResizer = PDFSidebarResizer;

			/***/
		},
		/* 25 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFThumbnailViewer = void 0;

			var _ui_utils = __webpack_require__(3);

			var _pdf_thumbnail_view = __webpack_require__(26);

			const THUMBNAIL_SCROLL_MARGIN = -19;
			const THUMBNAIL_SELECTED_CLASS = 'selected';

			class PDFThumbnailViewer {
				constructor({ container, eventBus, linkService, renderingQueue, l10n }) {
					this.container = container;
					this.linkService = linkService;
					this.renderingQueue = renderingQueue;
					this.l10n = l10n;
					this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this));

					this._resetView();

					eventBus._on('optionalcontentconfigchanged', () => {
						this._setImageDisabled = true;
					});
				}

				_scrollUpdated() {
					this.renderingQueue.renderHighestPriority();
				}

				getThumbnail(index) {
					return this._thumbnails[index];
				}

				_getVisibleThumbs() {
					return (0, _ui_utils.getVisibleElements)({
						scrollEl: this.container,
						views: this._thumbnails
					});
				}

				scrollThumbnailIntoView(pageNumber) {
					if (!this.pdfDocument) {
						return;
					}

					const thumbnailView = this._thumbnails[pageNumber - 1];

					if (!thumbnailView) {
						console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.');
						return;
					}

					if (pageNumber !== this._currentPageNumber) {
						const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];
						prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);
						thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
					}

					const { first, last, views } = this._getVisibleThumbs();

					if (views.length > 0) {
						let shouldScroll = false;

						if (pageNumber <= first.id || pageNumber >= last.id) {
							shouldScroll = true;
						} else {
							for (const { id, percent } of views) {
								if (id !== pageNumber) {
									continue;
								}

								shouldScroll = percent < 100;
								break;
							}
						}

						if (shouldScroll) {
							(0, _ui_utils.scrollIntoView)(thumbnailView.div, {
								top: THUMBNAIL_SCROLL_MARGIN
							});
						}
					}

					this._currentPageNumber = pageNumber;
				}

				get pagesRotation() {
					return this._pagesRotation;
				}

				set pagesRotation(rotation) {
					if (!(0, _ui_utils.isValidRotation)(rotation)) {
						throw new Error('Invalid thumbnails rotation angle.');
					}

					if (!this.pdfDocument) {
						return;
					}

					if (this._pagesRotation === rotation) {
						return;
					}

					this._pagesRotation = rotation;
					const updateArgs = {
						rotation
					};

					for (const thumbnail of this._thumbnails) {
						thumbnail.update(updateArgs);
					}
				}

				cleanup() {
					for (const thumbnail of this._thumbnails) {
						if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) {
							thumbnail.reset();
						}
					}

					_pdf_thumbnail_view.TempImageFactory.destroyCanvas();
				}

				_resetView() {
					this._thumbnails = [];
					this._currentPageNumber = 1;
					this._pageLabels = null;
					this._pagesRotation = 0;
					this._optionalContentConfigPromise = null;
					this._setImageDisabled = false;
					this.container.textContent = '';
				}

				setDocument(pdfDocument) {
					if (this.pdfDocument) {
						this._cancelRendering();

						this._resetView();
					}

					this.pdfDocument = pdfDocument;

					if (!pdfDocument) {
						return;
					}

					const firstPagePromise = pdfDocument.getPage(1);
					const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
					firstPagePromise
						.then(firstPdfPage => {
							this._optionalContentConfigPromise = optionalContentConfigPromise;
							const pagesCount = pdfDocument.numPages;
							const viewport = firstPdfPage.getViewport({
								scale: 1
							});

							const checkSetImageDisabled = () => {
								return this._setImageDisabled;
							};

							for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
								const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({
									container: this.container,
									id: pageNum,
									defaultViewport: viewport.clone(),
									optionalContentConfigPromise,
									linkService: this.linkService,
									renderingQueue: this.renderingQueue,
									checkSetImageDisabled,
									l10n: this.l10n
								});

								this._thumbnails.push(thumbnail);
							}

							const firstThumbnailView = this._thumbnails[0];

							if (firstThumbnailView) {
								firstThumbnailView.setPdfPage(firstPdfPage);
							}

							const thumbnailView = this._thumbnails[this._currentPageNumber - 1];
							thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
						})
						.catch(reason => {
							console.error('Unable to initialize thumbnail viewer', reason);
						});
				}

				_cancelRendering() {
					for (const thumbnail of this._thumbnails) {
						thumbnail.cancelRendering();
					}
				}

				setPageLabels(labels) {
					if (!this.pdfDocument) {
						return;
					}

					if (!labels) {
						this._pageLabels = null;
					} else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
						this._pageLabels = null;
						console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.');
					} else {
						this._pageLabels = labels;
					}

					for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
						this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);
					}
				}

				async #ensurePdfPageLoaded(thumbView) {
					if (thumbView.pdfPage) {
						return thumbView.pdfPage;
					}

					try {
						const pdfPage = await this.pdfDocument.getPage(thumbView.id);

						if (!thumbView.pdfPage) {
							thumbView.setPdfPage(pdfPage);
						}

						return pdfPage;
					} catch (reason) {
						console.error('Unable to get page for thumb view', reason);
						return null;
					}
				}

				#getScrollAhead(visible) {
					if (visible.first?.id === 1) {
						return true;
					} else if (visible.last?.id === this._thumbnails.length) {
						return false;
					}

					return this.scroll.down;
				}

				forceRendering() {
					const visibleThumbs = this._getVisibleThumbs();

					const scrollAhead = this.#getScrollAhead(visibleThumbs);
					const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead);

					if (thumbView) {
						this.#ensurePdfPageLoaded(thumbView).then(() => {
							this.renderingQueue.renderView(thumbView);
						});
						return true;
					}

					return false;
				}
			}

			exports.PDFThumbnailViewer = PDFThumbnailViewer;

			/***/
		},
		/* 26 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.TempImageFactory = exports.PDFThumbnailView = void 0;

			var _ui_utils = __webpack_require__(3);

			var _pdfjsLib = __webpack_require__(5);

			const DRAW_UPSCALE_FACTOR = 2;
			const MAX_NUM_SCALING_STEPS = 3;
			const THUMBNAIL_CANVAS_BORDER_WIDTH = 1;
			const THUMBNAIL_WIDTH = 98;

			class TempImageFactory {
				static #tempCanvas = null;

				static getCanvas(width, height) {
					const tempCanvas = (this.#tempCanvas ||= document.createElement('canvas'));
					tempCanvas.width = width;
					tempCanvas.height = height;
					const ctx = tempCanvas.getContext('2d', {
						alpha: false
					});
					ctx.save();
					ctx.fillStyle = 'rgb(255, 255, 255)';
					ctx.fillRect(0, 0, width, height);
					ctx.restore();
					return [tempCanvas, tempCanvas.getContext('2d')];
				}

				static destroyCanvas() {
					const tempCanvas = this.#tempCanvas;

					if (tempCanvas) {
						tempCanvas.width = 0;
						tempCanvas.height = 0;
					}

					this.#tempCanvas = null;
				}
			}

			exports.TempImageFactory = TempImageFactory;

			class PDFThumbnailView {
				constructor({ container, id, defaultViewport, optionalContentConfigPromise, linkService, renderingQueue, checkSetImageDisabled, l10n }) {
					this.id = id;
					this.renderingId = 'thumbnail' + id;
					this.pageLabel = null;
					this.pdfPage = null;
					this.rotation = 0;
					this.viewport = defaultViewport;
					this.pdfPageRotate = defaultViewport.rotation;
					this._optionalContentConfigPromise = optionalContentConfigPromise || null;
					this.linkService = linkService;
					this.renderingQueue = renderingQueue;
					this.renderTask = null;
					this.renderingState = _ui_utils.RenderingStates.INITIAL;
					this.resume = null;

					this._checkSetImageDisabled =
						checkSetImageDisabled ||
						function () {
							return false;
						};

					const pageWidth = this.viewport.width,
						pageHeight = this.viewport.height,
						pageRatio = pageWidth / pageHeight;
					this.canvasWidth = THUMBNAIL_WIDTH;
					this.canvasHeight = (this.canvasWidth / pageRatio) | 0;
					this.scale = this.canvasWidth / pageWidth;
					this.l10n = l10n;
					const anchor = document.createElement('a');
					anchor.href = linkService.getAnchorUrl('#page=' + id);

					this._thumbPageTitle.then(msg => {
						anchor.title = msg;
					});

					anchor.onclick = function () {
						linkService.goToPage(id);
						return false;
					};

					this.anchor = anchor;
					const div = document.createElement('div');
					div.className = 'thumbnail';
					div.setAttribute('data-page-number', this.id);
					this.div = div;
					const ring = document.createElement('div');
					ring.className = 'thumbnailSelectionRing';
					const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;
					ring.style.width = this.canvasWidth + borderAdjustment + 'px';
					ring.style.height = this.canvasHeight + borderAdjustment + 'px';
					this.ring = ring;
					div.appendChild(ring);
					anchor.appendChild(div);
					container.appendChild(anchor);
				}

				setPdfPage(pdfPage) {
					this.pdfPage = pdfPage;
					this.pdfPageRotate = pdfPage.rotate;
					const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
					this.viewport = pdfPage.getViewport({
						scale: 1,
						rotation: totalRotation
					});
					this.reset();
				}

				reset() {
					this.cancelRendering();
					this.renderingState = _ui_utils.RenderingStates.INITIAL;
					const pageWidth = this.viewport.width,
						pageHeight = this.viewport.height,
						pageRatio = pageWidth / pageHeight;
					this.canvasHeight = (this.canvasWidth / pageRatio) | 0;
					this.scale = this.canvasWidth / pageWidth;
					this.div.removeAttribute('data-loaded');
					const ring = this.ring;
					ring.textContent = '';
					const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;
					ring.style.width = this.canvasWidth + borderAdjustment + 'px';
					ring.style.height = this.canvasHeight + borderAdjustment + 'px';

					if (this.canvas) {
						this.canvas.width = 0;
						this.canvas.height = 0;
						delete this.canvas;
					}

					if (this.image) {
						this.image.removeAttribute('src');
						delete this.image;
					}
				}

				update({ rotation = null }) {
					if (typeof rotation === 'number') {
						this.rotation = rotation;
					}

					const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
					this.viewport = this.viewport.clone({
						scale: 1,
						rotation: totalRotation
					});
					this.reset();
				}

				cancelRendering() {
					if (this.renderTask) {
						this.renderTask.cancel();
						this.renderTask = null;
					}

					this.resume = null;
				}

				_getPageDrawContext(upscaleFactor = 1) {
					const canvas = document.createElement('canvas');
					const ctx = canvas.getContext('2d', {
						alpha: false
					});
					const outputScale = new _ui_utils.OutputScale();
					canvas.width = (upscaleFactor * this.canvasWidth * outputScale.sx) | 0;
					canvas.height = (upscaleFactor * this.canvasHeight * outputScale.sy) | 0;
					const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
					return {
						ctx,
						canvas,
						transform
					};
				}

				_convertCanvasToImage(canvas) {
					if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) {
						throw new Error('_convertCanvasToImage: Rendering has not finished.');
					}

					const reducedCanvas = this._reduceImage(canvas);

					const image = document.createElement('img');
					image.className = 'thumbnailImage';

					this._thumbPageCanvas.then(msg => {
						image.setAttribute('aria-label', msg);
					});

					image.style.width = this.canvasWidth + 'px';
					image.style.height = this.canvasHeight + 'px';
					image.src = reducedCanvas.toDataURL();
					this.image = image;
					this.div.setAttribute('data-loaded', true);
					this.ring.appendChild(image);
					reducedCanvas.width = 0;
					reducedCanvas.height = 0;
				}

				draw() {
					if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) {
						console.error('Must be in new state before drawing');
						return Promise.resolve();
					}

					const { pdfPage } = this;

					if (!pdfPage) {
						this.renderingState = _ui_utils.RenderingStates.FINISHED;
						return Promise.reject(new Error('pdfPage is not loaded'));
					}

					this.renderingState = _ui_utils.RenderingStates.RUNNING;

					const finishRenderTask = async (error = null) => {
						if (renderTask === this.renderTask) {
							this.renderTask = null;
						}

						if (error instanceof _pdfjsLib.RenderingCancelledException) {
							return;
						}

						this.renderingState = _ui_utils.RenderingStates.FINISHED;

						this._convertCanvasToImage(canvas);

						if (error) {
							throw error;
						}
					};

					const { ctx, canvas, transform } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR);

					const drawViewport = this.viewport.clone({
						scale: DRAW_UPSCALE_FACTOR * this.scale
					});

					const renderContinueCallback = cont => {
						if (!this.renderingQueue.isHighestPriority(this)) {
							this.renderingState = _ui_utils.RenderingStates.PAUSED;

							this.resume = () => {
								this.renderingState = _ui_utils.RenderingStates.RUNNING;
								cont();
							};

							return;
						}

						cont();
					};

					const renderContext = {
						canvasContext: ctx,
						transform,
						viewport: drawViewport,
						optionalContentConfigPromise: this._optionalContentConfigPromise
					};
					const renderTask = (this.renderTask = pdfPage.render(renderContext));
					renderTask.onContinue = renderContinueCallback;
					const resultPromise = renderTask.promise.then(
						function () {
							return finishRenderTask(null);
						},
						function (error) {
							return finishRenderTask(error);
						}
					);
					resultPromise.finally(() => {
						canvas.width = 0;
						canvas.height = 0;
						const pageCached = this.linkService.isPageCached(this.id);

						if (!pageCached) {
							this.pdfPage?.cleanup();
						}
					});
					return resultPromise;
				}

				setImage(pageView) {
					if (this._checkSetImageDisabled()) {
						return;
					}

					if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) {
						return;
					}

					const { canvas, pdfPage } = pageView;

					if (!canvas) {
						return;
					}

					if (!this.pdfPage) {
						this.setPdfPage(pdfPage);
					}

					this.renderingState = _ui_utils.RenderingStates.FINISHED;

					this._convertCanvasToImage(canvas);
				}

				_reduceImage(img) {
					const { ctx, canvas } = this._getPageDrawContext();

					if (img.width <= 2 * canvas.width) {
						ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
						return canvas;
					}

					let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;
					let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;
					const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight);

					while (reducedWidth > img.width || reducedHeight > img.height) {
						reducedWidth >>= 1;
						reducedHeight >>= 1;
					}

					reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight);

					while (reducedWidth > 2 * canvas.width) {
						reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1);
						reducedWidth >>= 1;
						reducedHeight >>= 1;
					}

					ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height);
					return canvas;
				}

				get _thumbPageTitle() {
					return this.l10n.get('thumb_page_title', {
						page: this.pageLabel ?? this.id
					});
				}

				get _thumbPageCanvas() {
					return this.l10n.get('thumb_page_canvas', {
						page: this.pageLabel ?? this.id
					});
				}

				setPageLabel(label) {
					this.pageLabel = typeof label === 'string' ? label : null;

					this._thumbPageTitle.then(msg => {
						this.anchor.title = msg;
					});

					if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) {
						return;
					}

					this._thumbPageCanvas.then(msg => {
						this.image?.setAttribute('aria-label', msg);
					});
				}
			}

			exports.PDFThumbnailView = PDFThumbnailView;

			/***/
		},
		/* 27 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFViewer = exports.PDFSinglePageViewer = void 0;

			var _ui_utils = __webpack_require__(3);

			var _base_viewer = __webpack_require__(28);

			class PDFViewer extends _base_viewer.BaseViewer {}

			exports.PDFViewer = PDFViewer;

			class PDFSinglePageViewer extends _base_viewer.BaseViewer {
				_resetView() {
					super._resetView();

					this._scrollMode = _ui_utils.ScrollMode.PAGE;
					this._spreadMode = _ui_utils.SpreadMode.NONE;
				}
			}

			exports.PDFSinglePageViewer = PDFSinglePageViewer;

			/***/
		},
		/* 28 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PagesCountLimit = exports.PDFPageViewBuffer = exports.BaseViewer = void 0;

			var _pdfjsLib = __webpack_require__(5);

			var _pdf_cursor_tools = __webpack_require__(6);

			var _ui_utils = __webpack_require__(3);

			var _annotation_layer_builder = __webpack_require__(29);

			var _l10n_utils = __webpack_require__(30);

			var _pdf_page_view = __webpack_require__(31);

			var _pdf_rendering_queue = __webpack_require__(21);

			var _pdf_link_service = __webpack_require__(8);

			var _struct_tree_layer_builder = __webpack_require__(32);

			var _text_highlighter = __webpack_require__(33);

			var _text_layer_builder = __webpack_require__(34);

			var _xfa_layer_builder = __webpack_require__(35);

			const DEFAULT_CACHE_SIZE = 10;
			const ENABLE_PERMISSIONS_CLASS = 'enablePermissions';
			const PagesCountLimit = {
				FORCE_SCROLL_MODE_PAGE: 15000,
				FORCE_LAZY_PAGE_INIT: 7500,
				PAUSE_EAGER_PAGE_INIT: 250
			};
			exports.PagesCountLimit = PagesCountLimit;

			class PDFPageViewBuffer {
				#buf = new Set();
				#size = 0;

				constructor(size) {
					this.#size = size;
				}

				push(view) {
					const buf = this.#buf;

					if (buf.has(view)) {
						buf.delete(view);
					}

					buf.add(view);

					if (buf.size > this.#size) {
						this.#destroyFirstView();
					}
				}

				resize(newSize, idsToKeep = null) {
					this.#size = newSize;
					const buf = this.#buf;

					if (idsToKeep) {
						const ii = buf.size;
						let i = 1;

						for (const view of buf) {
							if (idsToKeep.has(view.id)) {
								buf.delete(view);
								buf.add(view);
							}

							if (++i > ii) {
								break;
							}
						}
					}

					while (buf.size > this.#size) {
						this.#destroyFirstView();
					}
				}

				has(view) {
					return this.#buf.has(view);
				}

				[Symbol.iterator]() {
					return this.#buf.keys();
				}

				#destroyFirstView() {
					const firstView = this.#buf.keys().next().value;
					firstView?.destroy();
					this.#buf.delete(firstView);
				}
			}

			exports.PDFPageViewBuffer = PDFPageViewBuffer;

			class BaseViewer {
				#buffer = null;
				#annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS;
				#previousAnnotationMode = null;
				#enablePermissions = false;
				#previousContainerHeight = 0;
				#scrollModePageState = null;
				#onVisibilityChange = null;

				constructor(options) {
					if (this.constructor === BaseViewer) {
						throw new Error('Cannot initialize BaseViewer.');
					}

					const viewerVersion = '2.14.305';

					if (_pdfjsLib.version !== viewerVersion) {
						throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`);
					}

					this.container = options.container;
					this.viewer = options.viewer || options.container.firstElementChild;

					if (!(this.container?.tagName.toUpperCase() === 'DIV' && this.viewer?.tagName.toUpperCase() === 'DIV')) {
						throw new Error('Invalid `container` and/or `viewer` option.');
					}

					if (this.container.offsetParent && getComputedStyle(this.container).position !== 'absolute') {
						throw new Error('The `container` must be absolutely positioned.');
					}

					this.eventBus = options.eventBus;
					this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
					this.findController = options.findController || null;
					this._scriptingManager = options.scriptingManager || null;
					this.removePageBorders = options.removePageBorders || false;
					this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE;
					this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS;
					this.imageResourcesPath = options.imageResourcesPath || '';
					this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
					this.useOnlyCssZoom = options.useOnlyCssZoom || false;
					this.maxCanvasPixels = options.maxCanvasPixels;
					this.l10n = options.l10n || _l10n_utils.NullL10n;
					this.#enablePermissions = options.enablePermissions || false;
					this.pageColors = options.pageColors || null;
					if (!window.whiteboards) {
						window.whiteboards = {};
					}

					if (options.pageColors && (!CSS.supports('color', options.pageColors.background) || !CSS.supports('color', options.pageColors.foreground))) {
						if (options.pageColors.background || options.pageColors.foreground) {
							console.warn("Ignoring `pageColors`-option, since the browser doesn't support the values used.");
						}

						this.pageColors = null;
					}

					this.defaultRenderingQueue = !options.renderingQueue;

					if (this.defaultRenderingQueue) {
						this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
						this.renderingQueue.setViewer(this);
					} else {
						this.renderingQueue = options.renderingQueue;
					}

					this._doc = document.documentElement;
					this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
					this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
					this._onBeforeDraw = this._onAfterDraw = null;

					this._resetView();

					if (this.removePageBorders) {
						this.viewer.classList.add('removePageBorders');
					}

					this.updateContainerHeightCss();
					Promise.resolve().then(() => {
						this.eventBus.dispatch('baseviewerinit', {
							source: this
						});
					});
				}

				get pagesCount() {
					return this._pages.length;
				}

				getPageView(index) {
					return this._pages[index];
				}

				get pageViewsReady() {
					if (!this._pagesCapability.settled) {
						return false;
					}

					return this._pages.every(function (pageView) {
						return pageView?.pdfPage;
					});
				}

				get renderForms() {
					return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS;
				}

				get enableScripting() {
					return !!this._scriptingManager;
				}

				get currentPageNumber() {
					return this._currentPageNumber;
				}

				set currentPageNumber(val) {
					if (!Number.isInteger(val)) {
						throw new Error('Invalid page number.');
					}

					if (!this.pdfDocument) {
						return;
					}

					if (!this._setCurrentPageNumber(val, true)) {
						console.error(`currentPageNumber: "${val}" is not a valid page.`);
					}
				}

				_createFabricCanvas(page) {
					if (this.__createFabricCanvasTimer) {
						clearTimeout(this.__createFabricCanvasTimer);
					}
					this.__createFabricCanvasTimer = setTimeout(() => {
						let id = 'c' + page;
						let whiteboard = document.getElementById(id);
						if (!whiteboard) {
							return;
						}
						if ($('.canvas-container').length === 0) {
							let annotate = new Annotate(id, window.whiteboards[id], page);
							window.whiteboards[id] = annotate;
						} else {
							Annotate.updatePage(window.whiteboards[id].canvas, page);
						}
						let viewport = PDFViewerApplication.pdfViewer.getPageView(this._currentPageNumber - 1);
						Annotate.setDimensions({
							width: Math.floor(viewport.width),
							height: Math.floor(viewport.height)
						});
						Annotate.setZoom(this._currentScale);
						if (PDFViewerApplication.pdfCursorTools.active === _pdf_cursor_tools.CursorTool.HAND) {
							$('.canvas-container').css('pointer-events', 'none');
						} else {
							$('.canvas-container').css('pointer-events', 'auto');
						}
						this.__createFabricCanvasTimer = null;
					}, 100);
				}

				_setCurrentPageNumber(val, resetCurrentPageView = false) {
					if (window.createFabricCanvasTimer) {
						clearTimeout(window.createFabricCanvasTimer);
					}
					this._createFabricCanvas(this._currentPageNumber);
					if (this._currentPageNumber === val) {
						if (resetCurrentPageView) {
							this.#resetCurrentPageView();
						}

						return true;
					}

					if (!(0 < val && val <= this.pagesCount)) {
						return false;
					}

					const previous = this._currentPageNumber;
					this._currentPageNumber = val;
					this.eventBus.dispatch('pagechanging', {
						source: this,
						pageNumber: val,
						pageLabel: this._pageLabels?.[val - 1] ?? null,
						previous
					});

					if (resetCurrentPageView) {
						this.#resetCurrentPageView();
					}

					return true;
				}

				get currentPageLabel() {
					return this._pageLabels?.[this._currentPageNumber - 1] ?? null;
				}

				set currentPageLabel(val) {
					if (!this.pdfDocument) {
						return;
					}

					let page = val | 0;

					if (this._pageLabels) {
						const i = this._pageLabels.indexOf(val);

						if (i >= 0) {
							page = i + 1;
						}
					}

					if (!this._setCurrentPageNumber(page, true)) {
						console.error(`currentPageLabel: "${val}" is not a valid page.`);
					}
				}

				get currentScale() {
					return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
				}

				set currentScale(val) {
					if (isNaN(val)) {
						throw new Error('Invalid numeric scale.');
					}

					if (!this.pdfDocument) {
						return;
					}

					this._setScale(val, false);
				}

				get currentScaleValue() {
					return this._currentScaleValue;
				}

				set currentScaleValue(val) {
					if (!this.pdfDocument) {
						return;
					}

					this._setScale(val, false);
				}

				get pagesRotation() {
					return this._pagesRotation;
				}

				set pagesRotation(rotation) {
					if (!(0, _ui_utils.isValidRotation)(rotation)) {
						throw new Error('Invalid pages rotation angle.');
					}

					if (!this.pdfDocument) {
						return;
					}

					rotation %= 360;

					if (rotation < 0) {
						rotation += 360;
					}

					if (this._pagesRotation === rotation) {
						return;
					}

					this._pagesRotation = rotation;
					const pageNumber = this._currentPageNumber;
					const updateArgs = {
						rotation
					};

					for (const pageView of this._pages) {
						pageView.update(updateArgs);
					}

					if (this._currentScaleValue) {
						this._setScale(this._currentScaleValue, true);
					}

					this.eventBus.dispatch('rotationchanging', {
						source: this,
						pagesRotation: rotation,
						pageNumber
					});

					if (this.defaultRenderingQueue) {
						this.update();
					}
				}

				get firstPagePromise() {
					return this.pdfDocument ? this._firstPageCapability.promise : null;
				}

				get onePageRendered() {
					return this.pdfDocument ? this._onePageRenderedCapability.promise : null;
				}

				get pagesPromise() {
					return this.pdfDocument ? this._pagesCapability.promise : null;
				}

				#initializePermissions(permissions) {
					if (!permissions) {
						return;
					}

					if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) {
						this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS);
					}

					if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS)) {
						if (this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) {
							this.#previousAnnotationMode = this.#annotationMode;
							this.#annotationMode = _pdfjsLib.AnnotationMode.ENABLE;
						}
					}
				}

				#onePageRenderedOrForceFetch() {
					if (document.visibilityState === 'hidden' || !this.container.offsetParent || this._getVisiblePages().views.length === 0) {
						return Promise.resolve();
					}

					const visibilityChangePromise = new Promise(resolve => {
						this.#onVisibilityChange = () => {
							if (document.visibilityState !== 'hidden') {
								return;
							}

							resolve();
							document.removeEventListener('visibilitychange', this.#onVisibilityChange);
							this.#onVisibilityChange = null;
						};

						document.addEventListener('visibilitychange', this.#onVisibilityChange);
					});
					return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]);
				}

				setDocument(pdfDocument) {
					if (this.pdfDocument) {
						this.eventBus.dispatch('pagesdestroy', {
							source: this
						});

						this._cancelRendering();

						this._resetView();

						if (this.findController) {
							this.findController.setDocument(null);
						}

						if (this._scriptingManager) {
							this._scriptingManager.setDocument(null);
						}
					}

					this.pdfDocument = pdfDocument;

					if (!pdfDocument) {
						return;
					}

					const isPureXfa = pdfDocument.isPureXfa;
					const pagesCount = pdfDocument.numPages;
					const firstPagePromise = pdfDocument.getPage(1);
					const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
					const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve();

					if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {
						console.warn('Forcing PAGE-scrolling for performance reasons, given the length of the document.');
						const mode = (this._scrollMode = _ui_utils.ScrollMode.PAGE);
					}

					this._pagesCapability.promise.then(
						() => {
							this.eventBus.dispatch('pagesloaded', {
								source: this,
								pagesCount
							});
						},
						() => {}
					);

					this._onBeforeDraw = evt => {
						const pageView = this._pages[evt.pageNumber - 1];

						if (!pageView) {
							return;
						}

						this.#buffer.push(pageView);
					};

					this.eventBus._on('pagerender', this._onBeforeDraw);

					this._onAfterDraw = evt => {
						if (evt.cssTransform || this._onePageRenderedCapability.settled) {
							return;
						}

						this._onePageRenderedCapability.resolve({
							timestamp: evt.timestamp
						});

						this.eventBus._off('pagerendered', this._onAfterDraw);

						this._onAfterDraw = null;

						if (this.#onVisibilityChange) {
							document.removeEventListener('visibilitychange', this.#onVisibilityChange);
							this.#onVisibilityChange = null;
						}
					};

					this.eventBus._on('pagerendered', this._onAfterDraw);

					Promise.all([firstPagePromise, permissionsPromise])
						.then(([firstPdfPage, permissions]) => {
							if (pdfDocument !== this.pdfDocument) {
								return;
							}

							this._firstPageCapability.resolve(firstPdfPage);

							this._optionalContentConfigPromise = optionalContentConfigPromise;
							this.#initializePermissions(permissions);
							const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer;
							const scale = this.currentScale;
							const viewport = firstPdfPage.getViewport({
								scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
							});
							const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !isPureXfa ? this : null;
							const annotationLayerFactory = this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE ? this : null;
							const xfaLayerFactory = isPureXfa ? this : null;

							for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
								const pageView = new _pdf_page_view.PDFPageView({
									container: viewerElement,
									eventBus: this.eventBus,
									id: pageNum,
									scale,
									defaultViewport: viewport.clone(),
									optionalContentConfigPromise,
									renderingQueue: this.renderingQueue,
									textLayerFactory,
									textLayerMode: this.textLayerMode,
									annotationLayerFactory,
									annotationMode: this.#annotationMode,
									xfaLayerFactory,
									textHighlighterFactory: this,
									structTreeLayerFactory: this,
									imageResourcesPath: this.imageResourcesPath,
									renderer: this.renderer,
									useOnlyCssZoom: this.useOnlyCssZoom,
									maxCanvasPixels: this.maxCanvasPixels,
									pageColors: this.pageColors,
									l10n: this.l10n
								});

								this._pages.push(pageView);
							}

							const firstPageView = this._pages[0];

							if (firstPageView) {
								firstPageView.setPdfPage(firstPdfPage);
								this.linkService.cachePageRef(1, firstPdfPage.ref);
							}

							if (this._scrollMode === _ui_utils.ScrollMode.PAGE) {
								this.#ensurePageViewVisible();
							} else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) {
								this._updateSpreadMode();
							}

							this.#onePageRenderedOrForceFetch().then(async () => {
								if (this.findController) {
									this.findController.setDocument(pdfDocument);
								}

								if (this._scriptingManager) {
									this._scriptingManager.setDocument(pdfDocument);
								}

								if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) {
									this._pagesCapability.resolve();

									return;
								}

								let getPagesLeft = pagesCount - 1;

								if (getPagesLeft <= 0) {
									this._pagesCapability.resolve();

									return;
								}

								for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {
									const promise = pdfDocument.getPage(pageNum).then(
										pdfPage => {
											const pageView = this._pages[pageNum - 1];

											if (!pageView.pdfPage) {
												pageView.setPdfPage(pdfPage);
											}

											this.linkService.cachePageRef(pageNum, pdfPage.ref);

											if (--getPagesLeft === 0) {
												this._pagesCapability.resolve();
											}
										},
										reason => {
											console.error(`Unable to get page ${pageNum} to initialize viewer`, reason);

											if (--getPagesLeft === 0) {
												this._pagesCapability.resolve();
											}
										}
									);

									if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {
										await promise;
									}
								}
							});
							this.eventBus.dispatch('pagesinit', {
								source: this
							});
							pdfDocument.getMetadata().then(({ info }) => {
								if (pdfDocument !== this.pdfDocument) {
									return;
								}

								if (info.Language) {
									this.viewer.lang = info.Language;
								}
							});

							if (this.defaultRenderingQueue) {
								this.update();
							}
						})
						.catch(reason => {
							console.error('Unable to initialize viewer', reason);

							this._pagesCapability.reject(reason);
						});
				}

				setPageLabels(labels) {
					if (!this.pdfDocument) {
						return;
					}

					if (!labels) {
						this._pageLabels = null;
					} else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
						this._pageLabels = null;
						console.error(`setPageLabels: Invalid page labels.`);
					} else {
						this._pageLabels = labels;
					}

					for (let i = 0, ii = this._pages.length; i < ii; i++) {
						this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);
					}
				}

				_resetView() {
					this._pages = [];
					this._currentPageNumber = 1;
					this._currentScale = _ui_utils.UNKNOWN_SCALE;
					this._currentScaleValue = null;
					this._pageLabels = null;
					this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);
					this._location = null;
					this._pagesRotation = 0;
					this._optionalContentConfigPromise = null;
					this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
					this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)();
					this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)();
					this._scrollMode = _ui_utils.ScrollMode.PAGE;
					this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN;
					this._spreadMode = _ui_utils.SpreadMode.NONE;
					this.#scrollModePageState = {
						previousPageNumber: 1,
						scrollDown: true,
						pages: []
					};

					if (this._onBeforeDraw) {
						this.eventBus._off('pagerender', this._onBeforeDraw);

						this._onBeforeDraw = null;
					}

					if (this._onAfterDraw) {
						this.eventBus._off('pagerendered', this._onAfterDraw);

						this._onAfterDraw = null;
					}

					if (this.#onVisibilityChange) {
						document.removeEventListener('visibilitychange', this.#onVisibilityChange);
						this.#onVisibilityChange = null;
					}

					this.viewer.textContent = '';

					this.viewer.removeAttribute('lang');
					this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS);

					if (this.#previousAnnotationMode !== null) {
						this.#annotationMode = this.#previousAnnotationMode;
						this.#previousAnnotationMode = null;
					}
				}

				#ensurePageViewVisible() {
					if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) {
						throw new Error('#ensurePageViewVisible: Invalid scrollMode value.');
					}

					const pageNumber = this._currentPageNumber,
						state = this.#scrollModePageState,
						viewer = this.viewer;
					viewer.textContent = '';
					state.pages.length = 0;

					if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) {
						const pageView = this._pages[pageNumber - 1];
						viewer.appendChild(pageView.div);
						state.pages.push(pageView);
					} else {
						const pageIndexSet = new Set(),
							parity = this._spreadMode - 1;

						if (parity === -1) {
							pageIndexSet.add(pageNumber - 1);
						} else if (pageNumber % 2 !== parity) {
							pageIndexSet.add(pageNumber - 1);
							pageIndexSet.add(pageNumber);
						} else {
							pageIndexSet.add(pageNumber - 2);
							pageIndexSet.add(pageNumber - 1);
						}

						const spread = document.createElement('div');
						spread.className = 'spread';

						if (this.isInPresentationMode) {
							const dummyPage = document.createElement('div');
							dummyPage.className = 'dummyPage';
							spread.appendChild(dummyPage);
						}

						for (const i of pageIndexSet) {
							const pageView = this._pages[i];

							if (!pageView) {
								continue;
							}

							spread.appendChild(pageView.div);
							state.pages.push(pageView);
						}

						viewer.appendChild(spread);
					}

					state.scrollDown = pageNumber >= state.previousPageNumber;
					state.previousPageNumber = pageNumber;
				}

				_scrollUpdate() {
					if (this.pagesCount === 0) {
						return;
					}

					this.update();
				}

				#scrollIntoView(pageView, pageSpot = null) {
					const { div, id } = pageView;

					if (this._scrollMode === _ui_utils.ScrollMode.PAGE) {
						this._setCurrentPageNumber(id);

						this.#ensurePageViewVisible();
						this.update();
					}

					if (!pageSpot && !this.isInPresentationMode) {
						const left = div.offsetLeft + div.clientLeft,
							right = left + div.clientWidth;
						const { scrollLeft, clientWidth } = this.container;

						if (left < scrollLeft || right > scrollLeft + clientWidth) {
							pageSpot = {
								left: 0,
								top: 0
							};
						}
					}

					(0, _ui_utils.scrollIntoView)(div, pageSpot);
				}

				#isSameScale(newScale) {
					return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15;
				}

				_setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {
					this._currentScaleValue = newValue.toString();

					if (this.#isSameScale(newScale)) {
						if (preset) {
							this.eventBus.dispatch('scalechanging', {
								source: this,
								scale: newScale,
								presetValue: newValue
							});
						}

						return;
					}

					this._doc.style.setProperty('--zoom-factor', newScale);

					const updateArgs = {
						scale: newScale
					};

					for (const pageView of this._pages) {
						pageView.update(updateArgs);
					}

					this._currentScale = newScale;

					if (!noScroll) {
						let page = this._currentPageNumber,
							dest;

						if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {
							page = this._location.pageNumber;
							dest = [
								null,
								{
									name: 'XYZ'
								},
								this._location.left,
								this._location.top,
								null
							];
						}

						this.scrollPageIntoView({
							pageNumber: page,
							destArray: dest,
							allowNegativeOffset: true
						});
					}

					this.eventBus.dispatch('scalechanging', {
						source: this,
						scale: newScale,
						presetValue: preset ? newValue : undefined
					});

					if (this.defaultRenderingQueue) {
						this.update();
					}

					this.updateContainerHeightCss();
				}

				get _pageWidthScaleFactor() {
					if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) {
						return 2;
					}

					return 1;
				}

				_setScale(value, noScroll = false) {
					let scale = parseFloat(value);

					if (scale > 0) {
						this._setScaleUpdatePages(scale, value, noScroll, false);
					} else {
						const currentPage = this._pages[this._currentPageNumber - 1];

						if (!currentPage) {
							return;
						}

						let hPadding = _ui_utils.SCROLLBAR_PADDING,
							vPadding = _ui_utils.VERTICAL_PADDING;

						if (this.isInPresentationMode) {
							hPadding = vPadding = 4;
						} else if (this.removePageBorders) {
							hPadding = vPadding = 0;
						}

						const pageWidthScale = (((this.container.clientWidth - hPadding) / currentPage.width) * currentPage.scale) / this._pageWidthScaleFactor;
						const pageHeightScale = ((this.container.clientHeight - vPadding) / currentPage.height) * currentPage.scale;

						switch (value) {
							case 'page-actual':
								scale = 1;
								break;

							case 'page-width':
								scale = pageWidthScale;
								break;

							case 'page-height':
								scale = pageHeightScale;
								break;

							case 'page-fit':
								scale = Math.min(pageWidthScale, pageHeightScale);
								break;

							case 'auto':
								const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);
								scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);
								break;

							default:
								console.error(`_setScale: "${value}" is an unknown zoom value.`);
								return;
						}

						this._setScaleUpdatePages(scale, value, noScroll, true);
					}
				}

				#resetCurrentPageView() {
					const pageView = this._pages[this._currentPageNumber - 1];

					if (this.isInPresentationMode) {
						this._setScale(this._currentScaleValue, true);
					}

					this.#scrollIntoView(pageView);
				}

				pageLabelToPageNumber(label) {
					if (!this._pageLabels) {
						return null;
					}

					const i = this._pageLabels.indexOf(label);

					if (i < 0) {
						return null;
					}

					return i + 1;
				}

				scrollPageIntoView({ pageNumber, destArray = null, allowNegativeOffset = false, ignoreDestinationZoom = false }) {
					if (!this.pdfDocument) {
						return;
					}

					const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1];

					if (!pageView) {
						console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`);
						return;
					}

					if (this.isInPresentationMode || !destArray) {
						this._setCurrentPageNumber(pageNumber, true);

						return;
					}

					let x = 0,
						y = 0;
					let width = 0,
						height = 0,
						widthScale,
						heightScale;
					const changeOrientation = pageView.rotation % 180 !== 0;
					const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
					const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
					let scale = 0;

					switch (destArray[1].name) {
						case 'XYZ':
							x = destArray[2];
							y = destArray[3];
							scale = destArray[4];
							x = x !== null ? x : 0;
							y = y !== null ? y : pageHeight;
							break;

						case 'Fit':
						case 'FitB':
							scale = 'page-fit';
							break;

						case 'FitH':
						case 'FitBH':
							y = destArray[2];
							scale = 'page-width';

							if (y === null && this._location) {
								x = this._location.left;
								y = this._location.top;
							} else if (typeof y !== 'number' || y < 0) {
								y = pageHeight;
							}

							break;

						case 'FitV':
						case 'FitBV':
							x = destArray[2];
							width = pageWidth;
							height = pageHeight;
							scale = 'page-height';
							break;

						case 'FitR':
							x = destArray[2];
							y = destArray[3];
							width = destArray[4] - x;
							height = destArray[5] - y;
							const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
							const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
							widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
							heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
							scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
							break;

						default:
							console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`);
							return;
					}

					if (!ignoreDestinationZoom) {
						if (scale && scale !== this._currentScale) {
							this.currentScaleValue = scale;
						} else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {
							this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
						}
					}

					if (scale === 'page-fit' && !destArray[4]) {
						this.#scrollIntoView(pageView);
						return;
					}

					const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
					let left = Math.min(boundingRect[0][0], boundingRect[1][0]);
					let top = Math.min(boundingRect[0][1], boundingRect[1][1]);

					if (!allowNegativeOffset) {
						left = Math.max(left, 0);
						top = Math.max(top, 0);
					}

					this.#scrollIntoView(pageView, {
						left,
						top
					});
				}

				_updateLocation(firstPage) {
					const currentScale = this._currentScale;
					const currentScaleValue = this._currentScaleValue;
					const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;
					const pageNumber = firstPage.id;
					const currentPageView = this._pages[pageNumber - 1];
					const container = this.container;
					const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);
					const intLeft = Math.round(topLeft[0]);
					const intTop = Math.round(topLeft[1]);
					let pdfOpenParams = `#page=${pageNumber}`;

					if (!this.isInPresentationMode) {
						pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;
					}

					this._location = {
						pageNumber,
						scale: normalizedScaleValue,
						top: intTop,
						left: intLeft,
						rotation: this._pagesRotation,
						pdfOpenParams
					};
				}

				update() {
					const visible = this._getVisiblePages();

					const visiblePages = visible.views,
						numVisiblePages = visiblePages.length;

					if (numVisiblePages === 0) {
						return;
					}

					const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
					this.#buffer.resize(newCacheSize, visible.ids);
					this.renderingQueue.renderHighestPriority(visible);
					const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && this._scrollMode === _ui_utils.ScrollMode.PAGE;
					const currentId = this._currentPageNumber;
					let stillFullyVisible = false;

					for (const page of visiblePages) {
						if (page.percent < 100) {
							break;
						}

						if (page.id === currentId && isSimpleLayout) {
							stillFullyVisible = true;
							break;
						}
					}

					this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id);

					this._updateLocation(visible.first);

					this.eventBus.dispatch('updateviewarea', {
						source: this,
						location: this._location
					});
					if (window.createFabricCanvasTimer) {
						clearTimeout(window.createFabricCanvasTimer);
					}
					this._createFabricCanvas(this._currentPageNumber);
				}

				containsElement(element) {
					return this.container.contains(element);
				}

				focus() {
					this.container.focus();
				}

				get _isContainerRtl() {
					return getComputedStyle(this.container).direction === 'rtl';
				}

				get isInPresentationMode() {
					return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
				}

				get isChangingPresentationMode() {
					return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
				}

				_getVisiblePages() {
					const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages,
						horizontal = false,
						rtl = horizontal && this._isContainerRtl;
					return (0, _ui_utils.getVisibleElements)({
						scrollEl: this.container,
						views,
						sortByVisibility: true,
						horizontal,
						rtl
					});
				}

				isPageVisible(pageNumber) {
					if (!this.pdfDocument) {
						return false;
					}

					if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
						console.error(`isPageVisible: "${pageNumber}" is not a valid page.`);
						return false;
					}

					return this._getVisiblePages().ids.has(pageNumber);
				}

				isPageCached(pageNumber) {
					if (!this.pdfDocument) {
						return false;
					}

					if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
						console.error(`isPageCached: "${pageNumber}" is not a valid page.`);
						return false;
					}

					const pageView = this._pages[pageNumber - 1];
					return this.#buffer.has(pageView);
				}

				cleanup() {
					for (const pageView of this._pages) {
						if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) {
							pageView.reset();
						}
					}
				}

				_cancelRendering() {
					for (const pageView of this._pages) {
						pageView.cancelRendering();
					}
				}

				async #ensurePdfPageLoaded(pageView) {
					if (pageView.pdfPage) {
						return pageView.pdfPage;
					}

					try {
						const pdfPage = await this.pdfDocument.getPage(pageView.id);

						if (!pageView.pdfPage) {
							pageView.setPdfPage(pdfPage);
						}

						if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) {
							this.linkService.cachePageRef(pageView.id, pdfPage.ref);
						}

						return pdfPage;
					} catch (reason) {
						console.error('Unable to get page for page view', reason);
						return null;
					}
				}

				#getScrollAhead(visible) {
					if (visible.first?.id === 1) {
						return true;
					} else if (visible.last?.id === this.pagesCount) {
						return false;
					}

					switch (this._scrollMode) {
						case _ui_utils.ScrollMode.PAGE:
							return this.#scrollModePageState.scrollDown;

						case _ui_utils.ScrollMode.HORIZONTAL:
							return this.scroll.right;
					}

					return this.scroll.down;
				}

				#toggleLoadingIconSpinner(visibleIds) {
					for (const id of visibleIds) {
						const pageView = this._pages[id - 1];
						pageView?.toggleLoadingIconSpinner(true);
					}

					for (const pageView of this.#buffer) {
						if (visibleIds.has(pageView.id)) {
							continue;
						}

						pageView.toggleLoadingIconSpinner(false);
					}
				}

				forceRendering(currentlyVisiblePages) {
					const visiblePages = currentlyVisiblePages || this._getVisiblePages();

					const scrollAhead = this.#getScrollAhead(visiblePages);
					const preRenderExtra = false;
					const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra);
					this.#toggleLoadingIconSpinner(visiblePages.ids);

					if (pageView) {
						this.#ensurePdfPageLoaded(pageView).then(() => {
							this.renderingQueue.renderView(pageView);
						});
						return true;
					}

					return false;
				}

				createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus, highlighter) {
					return new _text_layer_builder.TextLayerBuilder({
						textLayerDiv,
						eventBus,
						pageIndex,
						viewport,
						enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection,
						highlighter
					});
				}

				createTextHighlighter(pageIndex, eventBus) {
					return new _text_highlighter.TextHighlighter({
						eventBus,
						pageIndex,
						findController: this.isInPresentationMode ? null : this.findController
					});
				}

				createAnnotationLayerBuilder(
					pageDiv,
					pdfPage,
					annotationStorage = null,
					imageResourcesPath = '',
					renderForms = true,
					l10n = _l10n_utils.NullL10n,
					enableScripting = null,
					hasJSActionsPromise = null,
					mouseState = null,
					fieldObjectsPromise = null,
					annotationCanvasMap = null
				) {
					return new _annotation_layer_builder.AnnotationLayerBuilder({
						pageDiv,
						pdfPage,
						annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage,
						imageResourcesPath,
						renderForms,
						linkService: this.linkService,
						l10n,
						enableScripting: enableScripting ?? this.enableScripting,
						hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(),
						fieldObjectsPromise: fieldObjectsPromise || this.pdfDocument?.getFieldObjects(),
						mouseState: mouseState || this._scriptingManager?.mouseState,
						annotationCanvasMap
					});
				}

				createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) {
					return new _xfa_layer_builder.XfaLayerBuilder({
						pageDiv,
						pdfPage,
						annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage,
						linkService: this.linkService
					});
				}

				createStructTreeLayerBuilder(pdfPage) {
					return new _struct_tree_layer_builder.StructTreeLayerBuilder({
						pdfPage
					});
				}

				get hasEqualPageSizes() {
					const firstPageView = this._pages[0];

					for (let i = 1, ii = this._pages.length; i < ii; ++i) {
						const pageView = this._pages[i];

						if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
							return false;
						}
					}

					return true;
				}

				getPagesOverview() {
					return this._pages.map(pageView => {
						const viewport = pageView.pdfPage.getViewport({
							scale: 1
						});

						if ((0, _ui_utils.isPortraitOrientation)(viewport)) {
							return {
								width: viewport.width,
								height: viewport.height,
								rotation: viewport.rotation
							};
						}

						return {
							width: viewport.height,
							height: viewport.width,
							rotation: (viewport.rotation - 90) % 360
						};
					});
				}

				get optionalContentConfigPromise() {
					if (!this.pdfDocument) {
						return Promise.resolve(null);
					}

					if (!this._optionalContentConfigPromise) {
						return this.pdfDocument.getOptionalContentConfig();
					}

					return this._optionalContentConfigPromise;
				}

				set optionalContentConfigPromise(promise) {
					if (!(promise instanceof Promise)) {
						throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);
					}

					if (!this.pdfDocument) {
						return;
					}

					if (!this._optionalContentConfigPromise) {
						return;
					}

					this._optionalContentConfigPromise = promise;
					const updateArgs = {
						optionalContentConfigPromise: promise
					};

					for (const pageView of this._pages) {
						pageView.update(updateArgs);
					}

					this.update();
					this.eventBus.dispatch('optionalcontentconfigchanged', {
						source: this,
						promise
					});
				}

				_getPageAdvance(currentPageNumber, previous = false) {
					switch (this._scrollMode) {
						case _ui_utils.ScrollMode.WRAPPED: {
							const { views } = this._getVisiblePages(),
								pageLayout = new Map();

							for (const { id, y, percent, widthPercent } of views) {
								if (percent === 0 || widthPercent < 100) {
									continue;
								}

								let yArray = pageLayout.get(y);

								if (!yArray) {
									pageLayout.set(y, (yArray ||= []));
								}

								yArray.push(id);
							}

							for (const yArray of pageLayout.values()) {
								const currentIndex = yArray.indexOf(currentPageNumber);

								if (currentIndex === -1) {
									continue;
								}

								const numPages = yArray.length;

								if (numPages === 1) {
									break;
								}

								if (previous) {
									for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {
										const currentId = yArray[i],
											expectedId = yArray[i + 1] - 1;

										if (currentId < expectedId) {
											return currentPageNumber - expectedId;
										}
									}
								} else {
									for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {
										const currentId = yArray[i],
											expectedId = yArray[i - 1] + 1;

										if (currentId > expectedId) {
											return expectedId - currentPageNumber;
										}
									}
								}

								if (previous) {
									const firstId = yArray[0];

									if (firstId < currentPageNumber) {
										return currentPageNumber - firstId + 1;
									}
								} else {
									const lastId = yArray[numPages - 1];

									if (lastId > currentPageNumber) {
										return lastId - currentPageNumber + 1;
									}
								}

								break;
							}

							break;
						}

						case _ui_utils.ScrollMode.PAGE: {
							if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
								break;
							}

							const parity = this._spreadMode - 1;

							if (previous && currentPageNumber % 2 !== parity) {
								break;
							} else if (!previous && currentPageNumber % 2 === parity) {
								break;
							}

							const { views } = this._getVisiblePages(),
								expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;

							for (const { id, percent, widthPercent } of views) {
								if (id !== expectedId) {
									continue;
								}

								if (percent > 0 && widthPercent === 100) {
									return 2;
								}

								break;
							}

							break;
						}
					}

					return 1;
				}

				nextPage() {
					const currentPageNumber = this._currentPageNumber,
						pagesCount = this.pagesCount;

					if (currentPageNumber >= pagesCount) {
						return false;
					}

					const advance = this._getPageAdvance(currentPageNumber, false) || 1;
					this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);
					return true;
				}

				previousPage() {
					const currentPageNumber = this._currentPageNumber;

					if (currentPageNumber <= 1) {
						return false;
					}

					const advance = this._getPageAdvance(currentPageNumber, true) || 1;
					this.currentPageNumber = Math.max(currentPageNumber - advance, 1);
					return true;
				}

				increaseScale(steps = 1) {
					let newScale = this._currentScale;

					do {
						newScale = (newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2);
						newScale = Math.ceil(newScale * 10) / 10;
						newScale = Math.min(_ui_utils.MAX_SCALE, newScale);
					} while (--steps > 0 && newScale < _ui_utils.MAX_SCALE);

					this.currentScaleValue = newScale;
				}

				decreaseScale(steps = 1) {
					let newScale = this._currentScale;

					do {
						newScale = (newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2);
						newScale = Math.floor(newScale * 10) / 10;
						newScale = Math.max(_ui_utils.MIN_SCALE, newScale);
					} while (--steps > 0 && newScale > _ui_utils.MIN_SCALE);

					this.currentScaleValue = newScale;
				}

				updateContainerHeightCss() {
					const height = this.container.clientHeight;

					if (height !== this.#previousContainerHeight) {
						this.#previousContainerHeight = height;

						this._doc.style.setProperty('--viewer-container-height', `${height}px`);
					}
				}
			}

			exports.BaseViewer = BaseViewer;

			/***/
		},
		/* 29 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.AnnotationLayerBuilder = void 0;

			var _pdfjsLib = __webpack_require__(5);

			var _l10n_utils = __webpack_require__(30);

			class AnnotationLayerBuilder {
				constructor({
					pageDiv,
					pdfPage,
					linkService,
					annotationStorage = null,
					imageResourcesPath = '',
					renderForms = true,
					l10n = _l10n_utils.NullL10n,
					enableScripting = false,
					hasJSActionsPromise = null,
					fieldObjectsPromise = null,
					mouseState = null,
					annotationCanvasMap = null
				}) {
					this.pageDiv = pageDiv;
					this.pdfPage = pdfPage;
					this.linkService = linkService;
					this.imageResourcesPath = imageResourcesPath;
					this.renderForms = renderForms;
					this.l10n = l10n;
					this.annotationStorage = annotationStorage;
					this.enableScripting = enableScripting;
					this._hasJSActionsPromise = hasJSActionsPromise;
					this._fieldObjectsPromise = fieldObjectsPromise;
					this._mouseState = mouseState;
					this._annotationCanvasMap = annotationCanvasMap;
					this.div = null;
					this._cancelled = false;
				}

				async render(viewport, intent = 'display') {
					const [annotations, hasJSActions = false, fieldObjects = null] = await Promise.all([
						this.pdfPage.getAnnotations({
							intent
						}),
						this._hasJSActionsPromise,
						this._fieldObjectsPromise
					]);

					if (this._cancelled || annotations.length === 0) {
						return;
					}

					const parameters = {
						viewport: viewport.clone({
							dontFlip: true
						}),
						div: this.div,
						annotations,
						page: this.pdfPage,
						imageResourcesPath: this.imageResourcesPath,
						renderForms: this.renderForms,
						linkService: this.linkService,
						annotationStorage: this.annotationStorage,
						enableScripting: this.enableScripting,
						hasJSActions,
						fieldObjects,
						mouseState: this._mouseState,
						annotationCanvasMap: this._annotationCanvasMap
					};

					if (this.div) {
						_pdfjsLib.AnnotationLayer.update(parameters);
					} else {
						this.div = document.createElement('div');
						this.div.className = 'annotationLayer';
						this.pageDiv.appendChild(this.div);
						parameters.div = this.div;

						_pdfjsLib.AnnotationLayer.render(parameters);

						this.l10n.translate(this.div);
					}
				}

				cancel() {
					this._cancelled = true;
				}

				hide() {
					if (!this.div) {
						return;
					}

					this.div.hidden = true;
				}
			}

			exports.AnnotationLayerBuilder = AnnotationLayerBuilder;

			/***/
		},
		/* 30 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.NullL10n = void 0;
			exports.fixupLangCode = fixupLangCode;
			exports.getL10nFallback = getL10nFallback;
			const DEFAULT_L10N_STRINGS = {
				of_pages: 'of {{pagesCount}}',
				page_of_pages: '({{pageNumber}} of {{pagesCount}})',
				document_properties_kb: '{{size_kb}} KB ({{size_b}} bytes)',
				document_properties_mb: '{{size_mb}} MB ({{size_b}} bytes)',
				document_properties_date_string: '{{date}}, {{time}}',
				document_properties_page_size_unit_inches: 'in',
				document_properties_page_size_unit_millimeters: 'mm',
				document_properties_page_size_orientation_portrait: 'portrait',
				document_properties_page_size_orientation_landscape: 'landscape',
				document_properties_page_size_name_a3: 'A3',
				document_properties_page_size_name_a4: 'A4',
				document_properties_page_size_name_letter: 'Letter',
				document_properties_page_size_name_legal: 'Legal',
				document_properties_page_size_dimension_string: '{{width}} × {{height}} {{unit}} ({{orientation}})',
				document_properties_page_size_dimension_name_string: '{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})',
				document_properties_linearized_yes: 'Yes',
				document_properties_linearized_no: 'No',
				'toggle_sidebar.title': 'Toggle Sidebar',
				'toggle_sidebar_notification2.title': 'Toggle Sidebar (document contains outline/attachments/layers)',
				additional_layers: 'Additional Layers',
				page_landmark: 'Page {{page}}',
				thumb_page_title: 'Page {{page}}',
				thumb_page_canvas: 'Thumbnail of Page {{page}}',
				find_reached_top: 'Reached top of document, continued from bottom',
				find_reached_bottom: 'Reached end of document, continued from top',
				'find_match_count[one]': '{{current}} of {{total}} match',
				'find_match_count[other]': '{{current}} of {{total}} matches',
				'find_match_count_limit[one]': 'More than {{limit}} match',
				'find_match_count_limit[other]': 'More than {{limit}} matches',
				find_not_found: 'Phrase not found',
				error_version_info: 'PDF.js v{{version}} (build: {{build}})',
				error_message: 'Message: {{message}}',
				error_stack: 'Stack: {{stack}}',
				error_file: 'File: {{file}}',
				error_line: 'Line: {{line}}',
				rendering_error: 'An error occurred while rendering the page.',
				page_scale_width: 'Page Width',
				page_scale_fit: 'Page Fit',
				page_scale_auto: 'Automatic Zoom',
				page_scale_actual: 'Actual Size',
				page_scale_percent: '{{scale}}%',
				loading: 'Loading…',
				loading_error: 'An error occurred while loading the PDF.',
				invalid_file_error: 'Invalid or corrupted PDF file.',
				missing_file_error: 'Missing PDF file.',
				unexpected_response_error: 'Unexpected server response.',
				web_fonts_disabled: 'Web fonts are disabled: unable to use embedded PDF fonts.'
			};

			function getL10nFallback(key, args) {
				switch (key) {
					case 'find_match_count':
						key = `find_match_count[${args.total === 1 ? 'one' : 'other'}]`;
						break;

					case 'find_match_count_limit':
						key = `find_match_count_limit[${args.limit === 1 ? 'one' : 'other'}]`;
						break;
				}

				return DEFAULT_L10N_STRINGS[key] || '';
			}

			const PARTIAL_LANG_CODES = {
				en: 'en-US',
				es: 'es-ES',
				fy: 'fy-NL',
				ga: 'ga-IE',
				gu: 'gu-IN',
				hi: 'hi-IN',
				hy: 'hy-AM',
				nb: 'nb-NO',
				ne: 'ne-NP',
				nn: 'nn-NO',
				pa: 'pa-IN',
				pt: 'pt-PT',
				sv: 'sv-SE',
				zh: 'zh-CN'
			};

			function fixupLangCode(langCode) {
				return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;
			}

			function formatL10nValue(text, args) {
				if (!args) {
					return text;
				}

				return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => {
					return name in args ? args[name] : '{{' + name + '}}';
				});
			}

			const NullL10n = {
				async getLanguage() {
					return 'en-us';
				},

				async getDirection() {
					return 'ltr';
				},

				async get(key, args = null, fallback = getL10nFallback(key, args)) {
					return formatL10nValue(fallback, args);
				},

				async translate(element) {}
			};
			exports.NullL10n = NullL10n;

			/***/
		},
		/* 31 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.PDFPageView = void 0;

			var _pdfjsLib = __webpack_require__(5);

			var _ui_utils = __webpack_require__(3);

			var _app_options = __webpack_require__(1);

			var _l10n_utils = __webpack_require__(30);

			const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216;

			class PDFPageView {
				#annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS;

				constructor(options) {
					const container = options.container;
					const defaultViewport = options.defaultViewport;
					this.id = options.id;
					this.renderingId = 'page' + this.id;
					this.pdfPage = null;
					this.pageLabel = null;
					this.rotation = 0;
					this.scale = options.scale || _ui_utils.DEFAULT_SCALE;
					this.viewport = defaultViewport;
					this.pdfPageRotate = defaultViewport.rotation;
					this._optionalContentConfigPromise = options.optionalContentConfigPromise || null;
					this.hasRestrictedScaling = false;
					this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE;
					this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS;
					this.imageResourcesPath = options.imageResourcesPath || '';
					this.useOnlyCssZoom = options.useOnlyCssZoom || false;
					this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;
					this.pageColors = options.pageColors || null;
					this.eventBus = options.eventBus;
					this.renderingQueue = options.renderingQueue;
					this.textLayerFactory = options.textLayerFactory;
					this.annotationLayerFactory = options.annotationLayerFactory;
					this.xfaLayerFactory = options.xfaLayerFactory;
					this.textHighlighter = options.textHighlighterFactory?.createTextHighlighter(this.id - 1, this.eventBus);
					this.structTreeLayerFactory = options.structTreeLayerFactory;
					this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
					this.l10n = options.l10n || _l10n_utils.NullL10n;
					this.paintTask = null;
					this.paintedViewportMap = new WeakMap();
					this.renderingState = _ui_utils.RenderingStates.INITIAL;
					this.resume = null;
					this._renderError = null;
					this._isStandalone = !this.renderingQueue?.hasViewer();
					this._annotationCanvasMap = null;
					this.annotationLayer = null;
					this.textLayer = null;
					this.zoomLayer = null;
					this.xfaLayer = null;
					this.structTreeLayer = null;
					const div = document.createElement('div');
					div.className = 'page';
					div.style.width = Math.floor(this.viewport.width) + 'px';
					div.style.height = Math.floor(this.viewport.height) + 'px';
					div.setAttribute('data-page-number', this.id);
					div.setAttribute('role', 'region');
					this.l10n
						.get('page_landmark', {
							page: this.id
						})
						.then(msg => {
							div.setAttribute('aria-label', msg);
						});
					this.div = div;
					container?.appendChild(div);
				}

				setPdfPage(pdfPage) {
					this.pdfPage = pdfPage;
					this.pdfPageRotate = pdfPage.rotate;
					const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
					this.viewport = pdfPage.getViewport({
						scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
						rotation: totalRotation
					});
					this.reset();
				}

				destroy() {
					this.reset();

					if (this.pdfPage) {
						this.pdfPage.cleanup();
					}
				}

				async _renderAnnotationLayer() {
					let error = null;

					try {
						await this.annotationLayer.render(this.viewport, 'display');
					} catch (ex) {
						error = ex;
					} finally {
						this.eventBus.dispatch('annotationlayerrendered', {
							source: this,
							pageNumber: this.id,
							error
						});
					}
				}

				async _renderXfaLayer() {
					let error = null;

					try {
						const result = await this.xfaLayer.render(this.viewport, 'display');

						if (this.textHighlighter) {
							this._buildXfaTextContentItems(result.textDivs);
						}
					} catch (ex) {
						error = ex;
					} finally {
						this.eventBus.dispatch('xfalayerrendered', {
							source: this,
							pageNumber: this.id,
							error
						});
					}
				}

				async _buildXfaTextContentItems(textDivs) {
					const text = await this.pdfPage.getTextContent();
					const items = [];

					for (const item of text.items) {
						items.push(item.str);
					}

					this.textHighlighter.setTextMapping(textDivs, items);
					this.textHighlighter.enable();
				}

				_resetZoomLayer(removeFromDOM = false) {
					if (!this.zoomLayer) {
						return;
					}

					const zoomLayerCanvas = this.zoomLayer.firstChild;
					this.paintedViewportMap.delete(zoomLayerCanvas);
					zoomLayerCanvas.width = 0;
					zoomLayerCanvas.height = 0;

					if (removeFromDOM) {
						this.zoomLayer.remove();
					}

					this.zoomLayer = null;
				}

				reset({ keepZoomLayer = false, keepAnnotationLayer = false, keepXfaLayer = false } = {}) {
					this.cancelRendering({
						keepAnnotationLayer,
						keepXfaLayer
					});
					this.renderingState = _ui_utils.RenderingStates.INITIAL;
					const div = this.div;
					div.style.width = Math.floor(this.viewport.width) + 'px';
					div.style.height = Math.floor(this.viewport.height) + 'px';

					const childNodes = div.childNodes,
						zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null,
						annotationLayerNode = (keepAnnotationLayer && this.annotationLayer?.div) || null,
						xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null;

					for (let i = childNodes.length - 1; i >= 0; i--) {
						const node = childNodes[i];

						switch (node) {
							case zoomLayerNode:
							case annotationLayerNode:
							case xfaLayerNode:
								continue;
						}

						node.remove();
					}

					div.removeAttribute('data-loaded');

					if (annotationLayerNode) {
						this.annotationLayer.hide();
					}

					if (xfaLayerNode) {
						this.xfaLayer.hide();
					}

					if (!zoomLayerNode) {
						if (this.canvas) {
							this.paintedViewportMap.delete(this.canvas);
							this.canvas.width = 0;
							this.canvas.height = 0;
							delete this.canvas;
						}

						this._resetZoomLayer();
					}

					if (this.svg) {
						this.paintedViewportMap.delete(this.svg);
						delete this.svg;
					}

					this.loadingIconDiv = document.createElement('div');
					this.loadingIconDiv.className = 'loadingIcon notVisible';

					if (this._isStandalone) {
						this.toggleLoadingIconSpinner(true);
					}

					this.loadingIconDiv.setAttribute('role', 'img');
					this.l10n.get('loading').then(msg => {
						this.loadingIconDiv?.setAttribute('aria-label', msg);
					});
					div.appendChild(this.loadingIconDiv);
				}

				update({ scale = 0, rotation = null, optionalContentConfigPromise = null }) {
					this.scale = scale || this.scale;

					if (typeof rotation === 'number') {
						this.rotation = rotation;
					}

					if (optionalContentConfigPromise instanceof Promise) {
						this._optionalContentConfigPromise = optionalContentConfigPromise;
					}

					const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
					this.viewport = this.viewport.clone({
						scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
						rotation: totalRotation
					});

					if (this._isStandalone) {
						const { style } = document.documentElement;
						style.setProperty('--zoom-factor', this.scale);
					}

					if (this.svg) {
						this.cssTransform({
							target: this.svg,
							redrawAnnotationLayer: true,
							redrawXfaLayer: true
						});
						this.eventBus.dispatch('pagerendered', {
							source: this,
							pageNumber: this.id,
							cssTransform: true,
							timestamp: performance.now(),
							error: this._renderError
						});
						return;
					}

					let isScalingRestricted = false;

					if (this.canvas && this.maxCanvasPixels > 0) {
						const outputScale = this.outputScale;

						if (((Math.floor(this.viewport.width) * outputScale.sx) | 0) * ((Math.floor(this.viewport.height) * outputScale.sy) | 0) > this.maxCanvasPixels) {
							isScalingRestricted = true;
						}
					}

					if (this.canvas) {
						if (this.useOnlyCssZoom || (this.hasRestrictedScaling && isScalingRestricted)) {
							this.cssTransform({
								target: this.canvas,
								redrawAnnotationLayer: true,
								redrawXfaLayer: true
							});
							this.eventBus.dispatch('pagerendered', {
								source: this,
								pageNumber: this.id,
								cssTransform: true,
								timestamp: performance.now(),
								error: this._renderError
							});
							return;
						}

						if (!this.zoomLayer && !this.canvas.hidden) {
							this.zoomLayer = this.canvas.parentNode;
							this.zoomLayer.style.position = 'absolute';
						}
					}

					if (this.zoomLayer) {
						this.cssTransform({
							target: this.zoomLayer.firstChild
						});
					}

					this.reset({
						keepZoomLayer: true,
						keepAnnotationLayer: true,
						keepXfaLayer: true
					});
				}

				cancelRendering({ keepAnnotationLayer = false, keepXfaLayer = false } = {}) {
					if (this.paintTask) {
						this.paintTask.cancel();
						this.paintTask = null;
					}

					this.resume = null;

					if (this.textLayer) {
						this.textLayer.cancel();
						this.textLayer = null;
					}

					if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) {
						this.annotationLayer.cancel();
						this.annotationLayer = null;
						this._annotationCanvasMap = null;
					}

					if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {
						this.xfaLayer.cancel();
						this.xfaLayer = null;
						this.textHighlighter?.disable();
					}

					if (this._onTextLayerRendered) {
						this.eventBus._off('textlayerrendered', this._onTextLayerRendered);

						this._onTextLayerRendered = null;
					}
				}

				cssTransform({ target, redrawAnnotationLayer = false, redrawXfaLayer = false }) {
					const width = this.viewport.width;
					const height = this.viewport.height;
					const div = this.div;
					target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px';
					target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px';
					const relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation;
					const absRotation = Math.abs(relativeRotation);
					let scaleX = 1,
						scaleY = 1;

					if (absRotation === 90 || absRotation === 270) {
						scaleX = height / width;
						scaleY = width / height;
					}

					target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;

					if (this.textLayer) {
						const textLayerViewport = this.textLayer.viewport;
						const textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation;
						const textAbsRotation = Math.abs(textRelativeRotation);
						let scale = width / textLayerViewport.width;

						if (textAbsRotation === 90 || textAbsRotation === 270) {
							scale = width / textLayerViewport.height;
						}

						const textLayerDiv = this.textLayer.textLayerDiv;
						let transX, transY;

						switch (textAbsRotation) {
							case 0:
								transX = transY = 0;
								break;

							case 90:
								transX = 0;
								transY = '-' + textLayerDiv.style.height;
								break;

							case 180:
								transX = '-' + textLayerDiv.style.width;
								transY = '-' + textLayerDiv.style.height;
								break;

							case 270:
								transX = '-' + textLayerDiv.style.width;
								transY = 0;
								break;

							default:
								console.error('Bad rotation value.');
								break;
						}

						textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + `translate(${transX}, ${transY})`;
						textLayerDiv.style.transformOrigin = '0% 0%';
					}

					if (redrawAnnotationLayer && this.annotationLayer) {
						this._renderAnnotationLayer();
					}

					if (redrawXfaLayer && this.xfaLayer) {
						this._renderXfaLayer();
					}
				}

				get width() {
					return this.viewport.width;
				}

				get height() {
					return this.viewport.height;
				}

				getPagePoint(x, y) {
					return this.viewport.convertToPdfPoint(x, y);
				}

				toggleLoadingIconSpinner(viewVisible = false) {
					this.loadingIconDiv?.classList.toggle('notVisible', !viewVisible);
				}

				draw() {
					if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) {
						console.error('Must be in new state before drawing');
						this.reset();
					}

					const { div, pdfPage } = this;

					if (!pdfPage) {
						this.renderingState = _ui_utils.RenderingStates.FINISHED;

						if (this.loadingIconDiv) {
							this.loadingIconDiv.remove();
							delete this.loadingIconDiv;
						}

						return Promise.reject(new Error('pdfPage is not loaded'));
					}

					this.renderingState = _ui_utils.RenderingStates.RUNNING;
					const canvasWrapper = document.createElement('div');
					canvasWrapper.style.width = div.style.width;
					canvasWrapper.style.height = div.style.height;
					canvasWrapper.classList.add('canvasWrapper');

					if (this.annotationLayer?.div) {
						div.insertBefore(canvasWrapper, this.annotationLayer.div);
					} else {
						div.appendChild(canvasWrapper);
					}

					let textLayer = null;

					if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) {
						const textLayerDiv = document.createElement('div');
						textLayerDiv.className = 'textLayer';
						textLayerDiv.style.width = canvasWrapper.style.width;
						textLayerDiv.style.height = canvasWrapper.style.height;

						if (this.annotationLayer?.div) {
							div.insertBefore(textLayerDiv, this.annotationLayer.div);
						} else {
							div.appendChild(textLayerDiv);
						}

						textLayer = this.textLayerFactory.createTextLayerBuilder(
							textLayerDiv,
							this.id - 1,
							this.viewport,
							this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE,
							this.eventBus,
							this.textHighlighter
						);
					}

					this.textLayer = textLayer;

					if (this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE && this.annotationLayerFactory) {
						this._annotationCanvasMap ||= new Map();
						this.annotationLayer ||= this.annotationLayerFactory.createAnnotationLayerBuilder(
							div,
							pdfPage,
							null,
							this.imageResourcesPath,
							this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS,
							this.l10n,
							null,
							null,
							null,
							null,
							this._annotationCanvasMap
						);
					}

					if (this.xfaLayer?.div) {
						div.appendChild(this.xfaLayer.div);
					}

					let renderContinueCallback = null;

					if (this.renderingQueue) {
						renderContinueCallback = cont => {
							if (!this.renderingQueue.isHighestPriority(this)) {
								this.renderingState = _ui_utils.RenderingStates.PAUSED;

								this.resume = () => {
									this.renderingState = _ui_utils.RenderingStates.RUNNING;
									cont();
								};

								return;
							}

							cont();
						};
					}

					const finishPaintTask = async (error = null) => {
						if (paintTask === this.paintTask) {
							this.paintTask = null;
						}

						if (error instanceof _pdfjsLib.RenderingCancelledException) {
							this._renderError = null;
							return;
						}

						this._renderError = error;
						this.renderingState = _ui_utils.RenderingStates.FINISHED;

						if (this.loadingIconDiv) {
							this.loadingIconDiv.remove();
							delete this.loadingIconDiv;
						}

						this._resetZoomLayer(true);

						this.eventBus.dispatch('pagerendered', {
							source: this,
							pageNumber: this.id,
							cssTransform: false,
							timestamp: performance.now(),
							error: this._renderError
						});

						if (error) {
							throw error;
						}
					};

					const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper);
					paintTask.onRenderContinue = renderContinueCallback;
					this.paintTask = paintTask;
					const resultPromise = paintTask.promise.then(
						() => {
							return finishPaintTask(null).then(() => {
								if (textLayer) {
									const readableStream = pdfPage.streamTextContent({
										includeMarkedContent: true
									});
									textLayer.setTextContentStream(readableStream);
									textLayer.render();
								}

								if (this.annotationLayer) {
									this._renderAnnotationLayer();
								}
							});
						},
						function (reason) {
							return finishPaintTask(reason);
						}
					);

					if (this.xfaLayerFactory) {
						if (!this.xfaLayer) {
							this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(div, pdfPage, null);
						}

						this._renderXfaLayer();
					}

					if (this.structTreeLayerFactory && this.textLayer && this.canvas) {
						this._onTextLayerRendered = event => {
							if (event.pageNumber !== this.id) {
								return;
							}

							this.eventBus._off('textlayerrendered', this._onTextLayerRendered);

							this._onTextLayerRendered = null;

							if (!this.canvas) {
								return;
							}

							this.pdfPage.getStructTree().then(tree => {
								if (!tree) {
									return;
								}

								if (!this.canvas) {
									return;
								}

								const treeDom = this.structTreeLayer.render(tree);
								treeDom.classList.add('structTree');
								this.canvas.appendChild(treeDom);
							});
						};

						this.eventBus._on('textlayerrendered', this._onTextLayerRendered);

						this.structTreeLayer = this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage);
					}

					div.setAttribute('data-loaded', true);
					this.eventBus.dispatch('pagerender', {
						source: this,
						pageNumber: this.id
					});
					return resultPromise;
				}

				paintOnCanvas(canvasWrapper) {
					const renderCapability = (0, _pdfjsLib.createPromiseCapability)();
					const result = {
						promise: renderCapability.promise,

						onRenderContinue(cont) {
							cont();
						},

						cancel() {
							renderTask.cancel();
						}
					};
					const viewport = this.viewport;
					const canvas = document.createElement('canvas');
					canvas.hidden = true;
					let isCanvasHidden = true;

					const showCanvas = function () {
						if (isCanvasHidden) {
							canvas.hidden = false;
							isCanvasHidden = false;
						}
					};

					canvasWrapper.appendChild(canvas);
					this.canvas = canvas;
					const ctx = canvas.getContext('2d', {
						alpha: false
					});
					const outputScale = (this.outputScale = new _ui_utils.OutputScale());

					if (this.useOnlyCssZoom) {
						const actualSizeViewport = viewport.clone({
							scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
						});
						outputScale.sx *= actualSizeViewport.width / viewport.width;
						outputScale.sy *= actualSizeViewport.height / viewport.height;
					}

					if (this.maxCanvasPixels > 0) {
						const pixelsInViewport = viewport.width * viewport.height;
						const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);

						if (outputScale.sx > maxScale || outputScale.sy > maxScale) {
							outputScale.sx = maxScale;
							outputScale.sy = maxScale;
							this.hasRestrictedScaling = true;
						} else {
							this.hasRestrictedScaling = false;
						}
					}

					const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx);
					const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy);
					canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]);
					canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]);
					canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px';
					canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px';
					this.paintedViewportMap.set(canvas, viewport);

					let whiteboardCanvas = document.createElement('canvas');
					canvasWrapper.parentNode.appendChild(whiteboardCanvas);
					whiteboardCanvas.id = 'c' + this.id;
					whiteboardCanvas.width = Math.floor(viewport.width);
					whiteboardCanvas.height = Math.floor(viewport.height);
					whiteboardCanvas.style.width = Math.floor(viewport.width) + 'px';
					whiteboardCanvas.style.height = Math.floor(viewport.height) + 'px';

					const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
					const renderContext = {
						canvasContext: ctx,
						transform,
						viewport: this.viewport,
						annotationMode: this.#annotationMode,
						optionalContentConfigPromise: this._optionalContentConfigPromise,
						annotationCanvasMap: this._annotationCanvasMap,
						pageColors: this.pageColors
					};
					const renderTask = this.pdfPage.render(renderContext);

					renderTask.onContinue = function (cont) {
						showCanvas();

						if (result.onRenderContinue) {
							result.onRenderContinue(cont);
						} else {
							cont();
						}
					};

					renderTask.promise.then(
						function () {
							showCanvas();
							renderCapability.resolve();
						},
						function (error) {
							showCanvas();
							renderCapability.reject(error);
						}
					);
					return result;
				}

				paintOnSvg(wrapper) {
					let cancelled = false;

					const ensureNotCancelled = () => {
						if (cancelled) {
							throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, 'svg');
						}
					};

					const pdfPage = this.pdfPage;
					const actualSizeViewport = this.viewport.clone({
						scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
					});
					const promise = pdfPage
						.getOperatorList({
							annotationMode: this.#annotationMode
						})
						.then(opList => {
							ensureNotCancelled();
							const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);
							return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {
								ensureNotCancelled();
								this.svg = svg;
								this.paintedViewportMap.set(svg, actualSizeViewport);
								svg.style.width = wrapper.style.width;
								svg.style.height = wrapper.style.height;
								this.renderingState = _ui_utils.RenderingStates.FINISHED;
								wrapper.appendChild(svg);
							});
						});
					return {
						promise,

						onRenderContinue(cont) {
							cont();
						},

						cancel() {
							cancelled = true;
						}
					};
				}

				setPageLabel(label) {
					this.pageLabel = typeof label === 'string' ? label : null;

					if (this.pageLabel !== null) {
						this.div.setAttribute('data-page-label', this.pageLabel);
					} else {
						this.div.removeAttribute('data-page-label');
					}
				}
			}

			exports.PDFPageView = PDFPageView;

			/***/
		},
		/* 32 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.StructTreeLayerBuilder = void 0;
			const PDF_ROLE_TO_HTML_ROLE = {
				Document: null,
				DocumentFragment: null,
				Part: 'group',
				Sect: 'group',
				Div: 'group',
				Aside: 'note',
				NonStruct: 'none',
				P: null,
				H: 'heading',
				Title: null,
				FENote: 'note',
				Sub: 'group',
				Lbl: null,
				Span: null,
				Em: null,
				Strong: null,
				Link: 'link',
				Annot: 'note',
				Form: 'form',
				Ruby: null,
				RB: null,
				RT: null,
				RP: null,
				Warichu: null,
				WT: null,
				WP: null,
				L: 'list',
				LI: 'listitem',
				LBody: null,
				Table: 'table',
				TR: 'row',
				TH: 'columnheader',
				TD: 'cell',
				THead: 'columnheader',
				TBody: null,
				TFoot: null,
				Caption: null,
				Figure: 'figure',
				Formula: null,
				Artifact: null
			};
			const HEADING_PATTERN = /^H(\d+)$/;

			class StructTreeLayerBuilder {
				constructor({ pdfPage }) {
					this.pdfPage = pdfPage;
				}

				render(structTree) {
					return this._walk(structTree);
				}

				_setAttributes(structElement, htmlElement) {
					if (structElement.alt !== undefined) {
						htmlElement.setAttribute('aria-label', structElement.alt);
					}

					if (structElement.id !== undefined) {
						htmlElement.setAttribute('aria-owns', structElement.id);
					}

					if (structElement.lang !== undefined) {
						htmlElement.setAttribute('lang', structElement.lang);
					}
				}

				_walk(node) {
					if (!node) {
						return null;
					}

					const element = document.createElement('span');

					if ('role' in node) {
						const { role } = node;
						const match = role.match(HEADING_PATTERN);

						if (match) {
							element.setAttribute('role', 'heading');
							element.setAttribute('aria-level', match[1]);
						} else if (PDF_ROLE_TO_HTML_ROLE[role]) {
							element.setAttribute('role', PDF_ROLE_TO_HTML_ROLE[role]);
						}
					}

					this._setAttributes(node, element);

					if (node.children) {
						if (node.children.length === 1 && 'id' in node.children[0]) {
							this._setAttributes(node.children[0], element);
						} else {
							for (const kid of node.children) {
								element.appendChild(this._walk(kid));
							}
						}
					}

					return element;
				}
			}

			exports.StructTreeLayerBuilder = StructTreeLayerBuilder;

			/***/
		},
		/* 33 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.TextHighlighter = void 0;

			class TextHighlighter {
				constructor({ findController, eventBus, pageIndex }) {
					this.findController = findController;
					this.matches = [];
					this.eventBus = eventBus;
					this.pageIdx = pageIndex;
					this._onUpdateTextLayerMatches = null;
					this.textDivs = null;
					this.textContentItemsStr = null;
					this.enabled = false;
				}

				setTextMapping(divs, texts) {
					this.textDivs = divs;
					this.textContentItemsStr = texts;
				}

				enable() {
					if (!this.textDivs || !this.textContentItemsStr) {
						throw new Error('Text divs and strings have not been set.');
					}

					if (this.enabled) {
						throw new Error('TextHighlighter is already enabled.');
					}

					this.enabled = true;

					if (!this._onUpdateTextLayerMatches) {
						this._onUpdateTextLayerMatches = evt => {
							if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {
								this._updateMatches();
							}
						};

						this.eventBus._on('updatetextlayermatches', this._onUpdateTextLayerMatches);
					}

					this._updateMatches();
				}

				disable() {
					if (!this.enabled) {
						return;
					}

					this.enabled = false;

					if (this._onUpdateTextLayerMatches) {
						this.eventBus._off('updatetextlayermatches', this._onUpdateTextLayerMatches);

						this._onUpdateTextLayerMatches = null;
					}
				}

				_convertMatches(matches, matchesLength) {
					if (!matches) {
						return [];
					}

					const { textContentItemsStr } = this;
					let i = 0,
						iIndex = 0;
					const end = textContentItemsStr.length - 1;
					const result = [];

					for (let m = 0, mm = matches.length; m < mm; m++) {
						let matchIdx = matches[m];

						while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {
							iIndex += textContentItemsStr[i].length;
							i++;
						}

						if (i === textContentItemsStr.length) {
							console.error('Could not find a matching mapping');
						}

						const match = {
							begin: {
								divIdx: i,
								offset: matchIdx - iIndex
							}
						};
						matchIdx += matchesLength[m];

						while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {
							iIndex += textContentItemsStr[i].length;
							i++;
						}

						match.end = {
							divIdx: i,
							offset: matchIdx - iIndex
						};
						result.push(match);
					}

					return result;
				}

				_renderMatches(matches) {
					if (matches.length === 0) {
						return;
					}

					const { findController, pageIdx } = this;
					const { textContentItemsStr, textDivs } = this;
					const isSelectedPage = pageIdx === findController.selected.pageIdx;
					const selectedMatchIdx = findController.selected.matchIdx;
					const highlightAll = findController.state.highlightAll;
					let prevEnd = null;
					const infinity = {
						divIdx: -1,
						offset: undefined
					};

					function beginText(begin, className) {
						const divIdx = begin.divIdx;
						textDivs[divIdx].textContent = '';
						return appendTextToDiv(divIdx, 0, begin.offset, className);
					}

					function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
						let div = textDivs[divIdx];

						if (div.nodeType === Node.TEXT_NODE) {
							const span = document.createElement('span');
							div.parentNode.insertBefore(span, div);
							span.appendChild(div);
							textDivs[divIdx] = span;
							div = span;
						}

						const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);
						const node = document.createTextNode(content);

						if (className) {
							const span = document.createElement('span');
							span.className = `${className} appended`;
							span.appendChild(node);
							div.appendChild(span);
							return className.includes('selected') ? span.offsetLeft : 0;
						}

						div.appendChild(node);
						return 0;
					}

					let i0 = selectedMatchIdx,
						i1 = i0 + 1;

					if (highlightAll) {
						i0 = 0;
						i1 = matches.length;
					} else if (!isSelectedPage) {
						return;
					}

					for (let i = i0; i < i1; i++) {
						const match = matches[i];
						const begin = match.begin;
						const end = match.end;
						const isSelected = isSelectedPage && i === selectedMatchIdx;
						const highlightSuffix = isSelected ? ' selected' : '';
						let selectedLeft = 0;

						if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
							if (prevEnd !== null) {
								appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
							}

							beginText(begin);
						} else {
							appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
						}

						if (begin.divIdx === end.divIdx) {
							selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix);
						} else {
							selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix);

							for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
								textDivs[n0].className = 'highlight middle' + highlightSuffix;
							}

							beginText(end, 'highlight end' + highlightSuffix);
						}

						prevEnd = end;

						if (isSelected) {
							findController.scrollMatchIntoView({
								element: textDivs[begin.divIdx],
								selectedLeft,
								pageIndex: pageIdx,
								matchIndex: selectedMatchIdx
							});
						}
					}

					if (prevEnd) {
						appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
					}
				}

				_updateMatches() {
					if (!this.enabled) {
						return;
					}

					const { findController, matches, pageIdx } = this;
					const { textContentItemsStr, textDivs } = this;
					let clearedUntilDivIdx = -1;

					for (let i = 0, ii = matches.length; i < ii; i++) {
						const match = matches[i];
						const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);

						for (let n = begin, end = match.end.divIdx; n <= end; n++) {
							const div = textDivs[n];
							div.textContent = textContentItemsStr[n];
							div.className = '';
						}

						clearedUntilDivIdx = match.end.divIdx + 1;
					}

					if (!findController?.highlightMatches) {
						return;
					}

					const pageMatches = findController.pageMatches[pageIdx] || null;
					const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;
					this.matches = this._convertMatches(pageMatches, pageMatchesLength);

					this._renderMatches(this.matches);
				}
			}

			exports.TextHighlighter = TextHighlighter;

			/***/
		},
		/* 34 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.TextLayerBuilder = void 0;

			var _pdfjsLib = __webpack_require__(5);

			const EXPAND_DIVS_TIMEOUT = 300;

			class TextLayerBuilder {
				constructor({ textLayerDiv, eventBus, pageIndex, viewport, highlighter = null, enhanceTextSelection = false }) {
					this.textLayerDiv = textLayerDiv;
					this.eventBus = eventBus;
					this.textContent = null;
					this.textContentItemsStr = [];
					this.textContentStream = null;
					this.renderingDone = false;
					this.pageNumber = pageIndex + 1;
					this.viewport = viewport;
					this.textDivs = [];
					this.textLayerRenderTask = null;
					this.highlighter = highlighter;
					this.enhanceTextSelection = enhanceTextSelection;

					this._bindMouse();
				}

				_finishRendering() {
					this.renderingDone = true;

					if (!this.enhanceTextSelection) {
						const endOfContent = document.createElement('div');
						endOfContent.className = 'endOfContent';
						this.textLayerDiv.appendChild(endOfContent);
					}

					this.eventBus.dispatch('textlayerrendered', {
						source: this,
						pageNumber: this.pageNumber,
						numTextDivs: this.textDivs.length
					});
				}

				render(timeout = 0) {
					if (!(this.textContent || this.textContentStream) || this.renderingDone) {
						return;
					}

					this.cancel();
					this.textDivs.length = 0;
					this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);
					const textLayerFrag = document.createDocumentFragment();
					this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({
						textContent: this.textContent,
						textContentStream: this.textContentStream,
						container: textLayerFrag,
						viewport: this.viewport,
						textDivs: this.textDivs,
						textContentItemsStr: this.textContentItemsStr,
						timeout,
						enhanceTextSelection: this.enhanceTextSelection
					});
					this.textLayerRenderTask.promise.then(
						() => {
							this.textLayerDiv.appendChild(textLayerFrag);

							this._finishRendering();

							this.highlighter?.enable();
						},
						function (reason) {}
					);
				}

				cancel() {
					if (this.textLayerRenderTask) {
						this.textLayerRenderTask.cancel();
						this.textLayerRenderTask = null;
					}

					this.highlighter?.disable();
				}

				setTextContentStream(readableStream) {
					this.cancel();
					this.textContentStream = readableStream;
				}

				setTextContent(textContent) {
					this.cancel();
					this.textContent = textContent;
				}

				_bindMouse() {
					const div = this.textLayerDiv;
					let expandDivsTimer = null;
					div.addEventListener('mousedown', evt => {
						if (this.enhanceTextSelection && this.textLayerRenderTask) {
							this.textLayerRenderTask.expandTextDivs(true);

							if (expandDivsTimer) {
								clearTimeout(expandDivsTimer);
								expandDivsTimer = null;
							}

							return;
						}

						const end = div.querySelector('.endOfContent');

						if (!end) {
							return;
						}

						let adjustTop = evt.target !== div;
						adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none';

						if (adjustTop) {
							const divBounds = div.getBoundingClientRect();
							const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);
							end.style.top = (r * 100).toFixed(2) + '%';
						}

						end.classList.add('active');
					});
					div.addEventListener('mouseup', () => {
						if (this.enhanceTextSelection && this.textLayerRenderTask) {
							expandDivsTimer = setTimeout(() => {
								if (this.textLayerRenderTask) {
									this.textLayerRenderTask.expandTextDivs(false);
								}

								expandDivsTimer = null;
							}, EXPAND_DIVS_TIMEOUT);
							return;
						}

						const end = div.querySelector('.endOfContent');

						if (!end) {
							return;
						}

						end.style.top = '';
						end.classList.remove('active');
					});
				}
			}

			exports.TextLayerBuilder = TextLayerBuilder;

			/***/
		},
		/* 35 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.XfaLayerBuilder = void 0;

			var _pdfjsLib = __webpack_require__(5);

			class XfaLayerBuilder {
				constructor({ pageDiv, pdfPage, annotationStorage = null, linkService, xfaHtml = null }) {
					this.pageDiv = pageDiv;
					this.pdfPage = pdfPage;
					this.annotationStorage = annotationStorage;
					this.linkService = linkService;
					this.xfaHtml = xfaHtml;
					this.div = null;
					this._cancelled = false;
				}

				render(viewport, intent = 'display') {
					return this.pdfPage
						.getXfa()
						.then(xfaHtml => {
							if (this._cancelled || !xfaHtml) {
								return {
									textDivs: []
								};
							}

							const parameters = {
								viewport: viewport.clone({
									dontFlip: true
								}),
								div: this.div,
								xfaHtml,
								annotationStorage: this.annotationStorage,
								linkService: this.linkService,
								intent
							};

							if (this.div) {
								return _pdfjsLib.XfaLayer.update(parameters);
							}

							this.div = document.createElement('div');
							this.pageDiv.appendChild(this.div);
							parameters.div = this.div;
							return _pdfjsLib.XfaLayer.render(parameters);
						})
						.catch(error => {
							console.error(error);
						});
				}

				cancel() {
					this._cancelled = true;
				}

				hide() {
					if (!this.div) {
						return;
					}

					this.div.hidden = true;
				}
			}

			exports.XfaLayerBuilder = XfaLayerBuilder;

			/***/
		},
		/* 36 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.SecondaryToolbar = void 0;

			var _ui_utils = __webpack_require__(3);

			var _pdf_cursor_tools = __webpack_require__(6);

			var _base_viewer = __webpack_require__(28);

			class SecondaryToolbar {
				constructor(options, eventBus) {
					this.toolbar = options.toolbar;
					this.toggleButton = options.toggleButton;
					this.buttons = [
						{
							element: options.presentationModeButton,
							eventName: 'presentationmode',
							close: true
						},
						{
							element: options.viewBookmarkButton,
							eventName: null,
							close: true
						},
						{
							element: options.firstPageButton,
							eventName: 'firstpage',
							close: true
						},
						{
							element: options.lastPageButton,
							eventName: 'lastpage',
							close: true
						},
						{
							element: options.cursorSelectToolButton,
							eventName: 'switchcursortool',
							eventDetails: {
								tool: _pdf_cursor_tools.CursorTool.SELECT
							},
							close: true
						},
						{
							element: options.cursorHandToolButton,
							eventName: 'switchcursortool',
							eventDetails: {
								tool: _pdf_cursor_tools.CursorTool.HAND
							},
							close: true
						}
					];
					this.buttons.push({
						element: options.openFileButton,
						eventName: 'openfile',
						close: true
					});
					this.items = {
						firstPage: options.firstPageButton,
						lastPage: options.lastPageButton
					};
					this.eventBus = eventBus;
					this.opened = false;
					this.reset();
					this.#bindClickListeners();
					this.#bindCursorToolsListener(options);
				}

				get isOpen() {
					return this.opened;
				}

				setPageNumber(pageNumber) {
					this.pageNumber = pageNumber;
					this.#updateUIState();
				}

				setPagesCount(pagesCount) {
					this.pagesCount = pagesCount;
					this.#updateUIState();
				}

				reset() {
					this.pageNumber = 0;
					this.pagesCount = 0;
					this.#updateUIState();
					this.eventBus.dispatch('secondarytoolbarreset', {
						source: this
					});
				}

				#updateUIState() {
					this.items.firstPage.disabled = this.pageNumber <= 1;
					this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;
				}

				#bindClickListeners() {
					this.toggleButton.addEventListener('click', this.toggle.bind(this));

					for (const { element, eventName, close, eventDetails } of this.buttons) {
						element.addEventListener('click', evt => {
							if (eventName !== null) {
								const details = {
									source: this
								};

								for (const property in eventDetails) {
									details[property] = eventDetails[property];
								}

								this.eventBus.dispatch(eventName, details);
							}

							if (close) {
								this.close();
							}
						});
					}
				}

				#bindCursorToolsListener({ cursorSelectToolButton, cursorHandToolButton }) {
					this.eventBus._on('cursortoolchanged', function ({ tool }) {
						const isSelect = tool === _pdf_cursor_tools.CursorTool.SELECT,
							isHand = tool === _pdf_cursor_tools.CursorTool.HAND;
						cursorSelectToolButton.classList.toggle('toggled', isSelect);
						cursorHandToolButton.classList.toggle('toggled', isHand);
						cursorSelectToolButton.setAttribute('aria-checked', isSelect);
						cursorHandToolButton.setAttribute('aria-checked', isHand);
					});
				}

				open() {
					if (this.opened) {
						return;
					}

					this.opened = true;
					this.toggleButton.classList.add('toggled');
					this.toggleButton.setAttribute('aria-expanded', 'true');
					this.toolbar.classList.remove('hidden');
				}

				close() {
					if (!this.opened) {
						return;
					}

					this.opened = false;
					this.toolbar.classList.add('hidden');
					this.toggleButton.classList.remove('toggled');
					this.toggleButton.setAttribute('aria-expanded', 'false');
				}

				toggle() {
					if (this.opened) {
						this.close();
					} else {
						this.open();
					}
				}
			}

			exports.SecondaryToolbar = SecondaryToolbar;

			/***/
		},
		/* 37 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.Toolbar = void 0;

			var _ui_utils = __webpack_require__(3);

			const PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading';

			class Toolbar {
				constructor(options, eventBus, l10n) {
					this.toolbar = options.container;
					this.eventBus = eventBus;
					this.l10n = l10n;
					this.buttons = [
						{
							element: options.previous,
							eventName: 'previouspage'
						},
						{
							element: options.next,
							eventName: 'nextpage'
						},
						{
							element: options.zoomIn,
							eventName: 'zoomin'
						},
						{
							element: options.zoomOut,
							eventName: 'zoomout'
						},
						{
							element: options.presentationModeButton,
							eventName: 'presentationmode'
						},
						{
							element: options.viewBookmark,
							eventName: null
						}
					];
					this.buttons.push({
						element: options.openFile,
						eventName: 'openfile'
					});
					this.items = {
						numPages: options.numPages,
						pageNumber: options.pageNumber,
						scaleSelect: options.scaleSelect,
						customScaleOption: options.customScaleOption,
						previous: options.previous,
						next: options.next,
						zoomIn: options.zoomIn,
						zoomOut: options.zoomOut
					};
					this._wasLocalized = false;
					this.reset();

					this._bindListeners();
				}

				setPageNumber(pageNumber, pageLabel) {
					this.pageNumber = pageNumber;
					this.pageLabel = pageLabel;

					this._updateUIState(false);
				}

				setPagesCount(pagesCount, hasPageLabels) {
					this.pagesCount = pagesCount;
					this.hasPageLabels = hasPageLabels;

					this._updateUIState(true);
				}

				setPageScale(pageScaleValue, pageScale) {
					this.pageScaleValue = (pageScaleValue || pageScale).toString();
					this.pageScale = pageScale;

					this._updateUIState(false);
				}

				reset() {
					this.pageNumber = 0;
					this.pageLabel = null;
					this.hasPageLabels = false;
					this.pagesCount = 0;
					this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
					this.pageScale = _ui_utils.DEFAULT_SCALE;

					this._updateUIState(true);

					this.updateLoadingIndicatorState();
				}

				_bindListeners() {
					const { pageNumber, scaleSelect } = this.items;
					const self = this;

					for (const { element, eventName } of this.buttons) {
						element.addEventListener('click', evt => {
							if (eventName !== null) {
								this.eventBus.dispatch(eventName, {
									source: this
								});
							}
						});
					}

					pageNumber.addEventListener('click', function () {
						this.select();
					});
					pageNumber.addEventListener('change', function () {
						self.eventBus.dispatch('pagenumberchanged', {
							source: self,
							value: this.value
						});
					});
					scaleSelect.addEventListener('change', function () {
						if (this.value === 'custom') {
							return;
						}

						self.eventBus.dispatch('scalechanged', {
							source: self,
							value: this.value
						});
					});
					scaleSelect.addEventListener('click', function (evt) {
						const target = evt.target;

						if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === 'OPTION') {
							this.blur();
						}
					});
					scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler;

					this.eventBus._on('localized', () => {
						this._wasLocalized = true;
						this.#adjustScaleWidth();

						this._updateUIState(true);
					});
				}

				_updateUIState(resetNumPages = false) {
					if (!this._wasLocalized) {
						return;
					}

					const { pageNumber, pagesCount, pageScaleValue, pageScale, items } = this;

					if (resetNumPages) {
						if (this.hasPageLabels) {
							items.pageNumber.type = 'text';
						} else {
							items.pageNumber.type = 'number';
							this.l10n
								.get('of_pages', {
									pagesCount
								})
								.then(msg => {
									items.numPages.textContent = msg;
								});
						}

						items.pageNumber.max = pagesCount;
					}

					if (this.hasPageLabels) {
						items.pageNumber.value = this.pageLabel;
						this.l10n
							.get('page_of_pages', {
								pageNumber,
								pagesCount
							})
							.then(msg => {
								items.numPages.textContent = msg;
							});
					} else {
						items.pageNumber.value = pageNumber;
					}

					items.previous.disabled = pageNumber <= 1;
					items.next.disabled = pageNumber >= pagesCount;
					items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE;
					items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE;
					this.l10n
						.get('page_scale_percent', {
							scale: Math.round(pageScale * 10000) / 100
						})
						.then(msg => {
							let predefinedValueFound = false;

							for (const option of items.scaleSelect.options) {
								if (option.value !== pageScaleValue) {
									option.selected = false;
									continue;
								}

								option.selected = true;
								predefinedValueFound = true;
							}

							if (!predefinedValueFound) {
								items.customScaleOption.textContent = msg;
								items.customScaleOption.selected = true;
							}
						});
				}

				updateLoadingIndicatorState(loading = false) {
					const pageNumberInput = this.items.pageNumber;
					pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);
				}

				async #adjustScaleWidth() {
					const { items, l10n } = this;
					const predefinedValuesPromise = Promise.all([l10n.get('page_scale_auto'), l10n.get('page_scale_actual'), l10n.get('page_scale_fit'), l10n.get('page_scale_width')]);
					await _ui_utils.animationStarted;
					const style = getComputedStyle(items.scaleSelect),
						scaleSelectContainerWidth = parseInt(style.getPropertyValue('--scale-select-container-width'), 10),
						scaleSelectOverflow = parseInt(style.getPropertyValue('--scale-select-overflow'), 10);
					const canvas = document.createElement('canvas');
					const ctx = canvas.getContext('2d', {
						alpha: false
					});
					ctx.font = `${style.fontSize} ${style.fontFamily}`;
					let maxWidth = 0;

					for (const predefinedValue of await predefinedValuesPromise) {
						const { width } = ctx.measureText(predefinedValue);

						if (width > maxWidth) {
							maxWidth = width;
						}
					}

					maxWidth += 2 * scaleSelectOverflow;

					if (maxWidth > scaleSelectContainerWidth) {
						const doc = document.documentElement;
						doc.style.setProperty('--scale-select-container-width', `${maxWidth}px`);
					}

					canvas.width = 0;
					canvas.height = 0;
				}
			}

			exports.Toolbar = Toolbar;

			/***/
		},
		/* 38 */
		/***/ (__unused_webpack_module, exports) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.ViewHistory = void 0;
			const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;

			class ViewHistory {
				constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {
					this.fingerprint = fingerprint;
					this.cacheSize = cacheSize;
					this._initializedPromise = this._readFromStorage().then(databaseStr => {
						const database = JSON.parse(databaseStr || '{}');
						let index = -1;

						if (!Array.isArray(database.files)) {
							database.files = [];
						} else {
							while (database.files.length >= this.cacheSize) {
								database.files.shift();
							}

							for (let i = 0, ii = database.files.length; i < ii; i++) {
								const branch = database.files[i];

								if (branch.fingerprint === this.fingerprint) {
									index = i;
									break;
								}
							}
						}

						if (index === -1) {
							index =
								database.files.push({
									fingerprint: this.fingerprint
								}) - 1;
						}

						this.file = database.files[index];
						this.database = database;
					});
				}

				async _writeToStorage() {
					const databaseStr = JSON.stringify(this.database);
					localStorage.setItem('pdfjs.history', databaseStr);
				}

				async _readFromStorage() {
					return localStorage.getItem('pdfjs.history');
				}

				async set(name, val) {
					await this._initializedPromise;
					this.file[name] = val;
					return this._writeToStorage();
				}

				async setMultiple(properties) {
					await this._initializedPromise;

					for (const name in properties) {
						this.file[name] = properties[name];
					}

					return this._writeToStorage();
				}

				async get(name, defaultValue) {
					await this._initializedPromise;
					const val = this.file[name];
					return val !== undefined ? val : defaultValue;
				}

				async getMultiple(properties) {
					await this._initializedPromise;
					const values = Object.create(null);

					for (const name in properties) {
						const val = this.file[name];
						values[name] = val !== undefined ? val : properties[name];
					}

					return values;
				}
			}

			exports.ViewHistory = ViewHistory;

			/***/
		},
		/* 39 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.GenericCom = void 0;

			var _app = __webpack_require__(2);

			var _preferences = __webpack_require__(40);

			var _genericl10n = __webpack_require__(42);

			var _generic_scripting = __webpack_require__(44);

			const GenericCom = {};
			exports.GenericCom = GenericCom;

			class GenericPreferences extends _preferences.BasePreferences {
				async _writeToStorage(prefObj) {
					localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));
				}

				async _readFromStorage(prefObj) {
					return JSON.parse(localStorage.getItem('pdfjs.preferences'));
				}
			}

			class GenericExternalServices extends _app.DefaultExternalServices {
				static createPreferences() {
					return new GenericPreferences();
				}

				static createL10n({ locale = 'en-US' }) {
					return new _genericl10n.GenericL10n(locale);
				}

				static createScripting({ sandboxBundleSrc }) {
					return new _generic_scripting.GenericScripting(sandboxBundleSrc);
				}
			}

			_app.PDFViewerApplication.externalServices = GenericExternalServices;

			/***/
		},
		/* 40 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.BasePreferences = void 0;

			var _app_options = __webpack_require__(1);

			class BasePreferences {
				#defaults = Object.freeze({
					annotationMode: 2,
					cursorToolOnLoad: 0,
					defaultZoomValue: '',
					disablePageLabels: false,
					enablePermissions: false,
					enableScripting: true,
					externalLinkTarget: 0,
					historyUpdateUrl: false,
					ignoreDestinationZoom: false,
					pageColorsBackground: 'Canvas',
					pageColorsForeground: 'CanvasText',
					pdfBugEnabled: false,
					renderer: 'canvas',
					sidebarViewOnLoad: -1,
					scrollModeOnLoad: -1,
					spreadModeOnLoad: -1,
					textLayerMode: 1,
					useOnlyCssZoom: false,
					viewerCssTheme: 0,
					viewOnLoad: 0,
					disableAutoFetch: false,
					disableFontFace: false,
					disableRange: false,
					disableStream: false,
					enableXfa: true
				});
				#prefs = Object.create(null);
				#initializedPromise = null;

				constructor() {
					if (this.constructor === BasePreferences) {
						throw new Error('Cannot initialize BasePreferences.');
					}

					this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => {
						for (const name in this.#defaults) {
							const prefValue = prefs?.[name];

							if (typeof prefValue === typeof this.#defaults[name]) {
								this.#prefs[name] = prefValue;
							}
						}
					});
				}

				async _writeToStorage(prefObj) {
					throw new Error('Not implemented: _writeToStorage');
				}

				async _readFromStorage(prefObj) {
					throw new Error('Not implemented: _readFromStorage');
				}

				async reset() {
					await this.#initializedPromise;
					const prefs = this.#prefs;
					this.#prefs = Object.create(null);
					return this._writeToStorage(this.#defaults).catch(reason => {
						this.#prefs = prefs;
						throw reason;
					});
				}

				async set(name, value) {
					await this.#initializedPromise;
					const defaultValue = this.#defaults[name],
						prefs = this.#prefs;

					if (defaultValue === undefined) {
						throw new Error(`Set preference: "${name}" is undefined.`);
					} else if (value === undefined) {
						throw new Error('Set preference: no value is specified.');
					}

					const valueType = typeof value,
						defaultType = typeof defaultValue;

					if (valueType !== defaultType) {
						if (valueType === 'number' && defaultType === 'string') {
							value = value.toString();
						} else {
							throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`);
						}
					} else {
						if (valueType === 'number' && !Number.isInteger(value)) {
							throw new Error(`Set preference: "${value}" must be an integer.`);
						}
					}

					this.#prefs[name] = value;
					return this._writeToStorage(this.#prefs).catch(reason => {
						this.#prefs = prefs;
						throw reason;
					});
				}

				async get(name) {
					await this.#initializedPromise;
					const defaultValue = this.#defaults[name];

					if (defaultValue === undefined) {
						throw new Error(`Get preference: "${name}" is undefined.`);
					}

					return this.#prefs[name] ?? defaultValue;
				}

				async getAll() {
					await this.#initializedPromise;
					const obj = Object.create(null);

					for (const name in this.#defaults) {
						obj[name] = this.#prefs[name] ?? this.#defaults[name];
					}

					return obj;
				}
			}

			exports.BasePreferences = BasePreferences;

			/***/
		},
		/* 41 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			/***/
		},
		/* 42 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.GenericL10n = void 0;

			__webpack_require__(43);

			var _l10n_utils = __webpack_require__(30);

			const webL10n = document.webL10n;

			class GenericL10n {
				constructor(lang) {
					this._lang = lang;
					this._ready = new Promise((resolve, reject) => {
						webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => {
							resolve(webL10n);
						});
					});
				}

				async getLanguage() {
					const l10n = await this._ready;
					return l10n.getLanguage();
				}

				async getDirection() {
					const l10n = await this._ready;
					return l10n.getDirection();
				}

				async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) {
					const l10n = await this._ready;
					return l10n.get(key, args, fallback);
				}

				async translate(element) {
					const l10n = await this._ready;
					return l10n.translate(element);
				}
			}

			exports.GenericL10n = GenericL10n;

			/***/
		},
		/* 43 */
		/***/ () => {
			document.webL10n = (function (window, document, undefined) {
				var gL10nData = {};
				var gTextData = '';
				var gTextProp = 'textContent';
				var gLanguage = '';
				var gMacros = {};
				var gReadyState = 'loading';
				var gAsyncResourceLoading = true;

				function getL10nResourceLinks() {
					return document.querySelectorAll('link[type="application/l10n"]');
				}

				function getL10nDictionary() {
					var script = document.querySelector('script[type="application/l10n"]');
					return script ? JSON.parse(script.innerHTML) : null;
				}

				function getTranslatableChildren(element) {
					return element ? element.querySelectorAll('*[data-l10n-id]') : [];
				}

				function getL10nAttributes(element) {
					if (!element) return {};
					var l10nId = element.getAttribute('data-l10n-id');
					var l10nArgs = element.getAttribute('data-l10n-args');
					var args = {};

					if (l10nArgs) {
						try {
							args = JSON.parse(l10nArgs);
						} catch (e) {
							console.warn('could not parse arguments for #' + l10nId);
						}
					}

					return {
						id: l10nId,
						args: args
					};
				}

				function xhrLoadText(url, onSuccess, onFailure) {
					onSuccess = onSuccess || function _onSuccess(data) {};

					onFailure = onFailure || function _onFailure() {};

					var xhr = new XMLHttpRequest();
					xhr.open('GET', url, gAsyncResourceLoading);

					if (xhr.overrideMimeType) {
						xhr.overrideMimeType('text/plain; charset=utf-8');
					}

					xhr.onreadystatechange = function () {
						if (xhr.readyState == 4) {
							if (xhr.status == 200 || xhr.status === 0) {
								onSuccess(xhr.responseText);
							} else {
								onFailure();
							}
						}
					};

					xhr.onerror = onFailure;
					xhr.ontimeout = onFailure;

					try {
						xhr.send(null);
					} catch (e) {
						onFailure();
					}
				}

				function parseResource(href, lang, successCallback, failureCallback) {
					var baseURL = href.replace(/[^\/]*$/, '') || './';

					function evalString(text) {
						if (text.lastIndexOf('\\') < 0) return text;
						return text
							.replace(/\\\\/g, '\\')
							.replace(/\\n/g, '\n')
							.replace(/\\r/g, '\r')
							.replace(/\\t/g, '\t')
							.replace(/\\b/g, '\b')
							.replace(/\\f/g, '\f')
							.replace(/\\{/g, '{')
							.replace(/\\}/g, '}')
							.replace(/\\"/g, '"')
							.replace(/\\'/g, "'");
					}

					function parseProperties(text, parsedPropertiesCallback) {
						var dictionary = {};
						var reBlank = /^\s*|\s*$/;
						var reComment = /^\s*#|^\s*$/;
						var reSection = /^\s*\[(.*)\]\s*$/;
						var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
						var reSplit = /^([^=\s]*)\s*=\s*(.+)$/;

						function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {
							var entries = rawText.replace(reBlank, '').split(/[\r\n]+/);
							var currentLang = '*';
							var genericLang = lang.split('-', 1)[0];
							var skipLang = false;
							var match = '';

							function nextEntry() {
								while (true) {
									if (!entries.length) {
										parsedRawLinesCallback();
										return;
									}

									var line = entries.shift();
									if (reComment.test(line)) continue;

									if (extendedSyntax) {
										match = reSection.exec(line);

										if (match) {
											currentLang = match[1].toLowerCase();
											skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang;
											continue;
										} else if (skipLang) {
											continue;
										}

										match = reImport.exec(line);

										if (match) {
											loadImport(baseURL + match[1], nextEntry);
											return;
										}
									}

									var tmp = line.match(reSplit);

									if (tmp && tmp.length == 3) {
										dictionary[tmp[1]] = evalString(tmp[2]);
									}
								}
							}

							nextEntry();
						}

						function loadImport(url, callback) {
							xhrLoadText(
								url,
								function (content) {
									parseRawLines(content, false, callback);
								},
								function () {
									console.warn(url + ' not found.');
									callback();
								}
							);
						}

						parseRawLines(text, true, function () {
							parsedPropertiesCallback(dictionary);
						});
					}

					xhrLoadText(
						href,
						function (response) {
							gTextData += response;
							parseProperties(response, function (data) {
								for (var key in data) {
									var id,
										prop,
										index = key.lastIndexOf('.');

									if (index > 0) {
										id = key.substring(0, index);
										prop = key.substring(index + 1);
									} else {
										id = key;
										prop = gTextProp;
									}

									if (!gL10nData[id]) {
										gL10nData[id] = {};
									}

									gL10nData[id][prop] = data[key];
								}

								if (successCallback) {
									successCallback();
								}
							});
						},
						failureCallback
					);
				}

				function loadLocale(lang, callback) {
					if (lang) {
						lang = lang.toLowerCase();
					}

					callback = callback || function _callback() {};

					clear();
					gLanguage = lang;
					var langLinks = getL10nResourceLinks();
					var langCount = langLinks.length;

					if (langCount === 0) {
						var dict = getL10nDictionary();

						if (dict && dict.locales && dict.default_locale) {
							console.log('using the embedded JSON directory, early way out');
							gL10nData = dict.locales[lang];

							if (!gL10nData) {
								var defaultLocale = dict.default_locale.toLowerCase();

								for (var anyCaseLang in dict.locales) {
									anyCaseLang = anyCaseLang.toLowerCase();

									if (anyCaseLang === lang) {
										gL10nData = dict.locales[lang];
										break;
									} else if (anyCaseLang === defaultLocale) {
										gL10nData = dict.locales[defaultLocale];
									}
								}
							}

							callback();
						} else {
							console.log('no resource to load, early way out');
						}

						gReadyState = 'complete';
						return;
					}

					var onResourceLoaded = null;
					var gResourceCount = 0;

					onResourceLoaded = function () {
						gResourceCount++;

						if (gResourceCount >= langCount) {
							callback();
							gReadyState = 'complete';
						}
					};

					function L10nResourceLink(link) {
						var href = link.href;

						this.load = function (lang, callback) {
							parseResource(href, lang, callback, function () {
								console.warn(href + ' not found.');
								console.warn('"' + lang + '" resource not found');
								gLanguage = '';
								callback();
							});
						};
					}

					for (var i = 0; i < langCount; i++) {
						var resource = new L10nResourceLink(langLinks[i]);
						resource.load(lang, onResourceLoaded);
					}
				}

				function clear() {
					gL10nData = {};
					gTextData = '';
					gLanguage = '';
				}

				function getPluralRules(lang) {
					var locales2rules = {
						af: 3,
						ak: 4,
						am: 4,
						ar: 1,
						asa: 3,
						az: 0,
						be: 11,
						bem: 3,
						bez: 3,
						bg: 3,
						bh: 4,
						bm: 0,
						bn: 3,
						bo: 0,
						br: 20,
						brx: 3,
						bs: 11,
						ca: 3,
						cgg: 3,
						chr: 3,
						cs: 12,
						cy: 17,
						da: 3,
						de: 3,
						dv: 3,
						dz: 0,
						ee: 3,
						el: 3,
						en: 3,
						eo: 3,
						es: 3,
						et: 3,
						eu: 3,
						fa: 0,
						ff: 5,
						fi: 3,
						fil: 4,
						fo: 3,
						fr: 5,
						fur: 3,
						fy: 3,
						ga: 8,
						gd: 24,
						gl: 3,
						gsw: 3,
						gu: 3,
						guw: 4,
						gv: 23,
						ha: 3,
						haw: 3,
						he: 2,
						hi: 4,
						hr: 11,
						hu: 0,
						id: 0,
						ig: 0,
						ii: 0,
						is: 3,
						it: 3,
						iu: 7,
						ja: 0,
						jmc: 3,
						jv: 0,
						ka: 0,
						kab: 5,
						kaj: 3,
						kcg: 3,
						kde: 0,
						kea: 0,
						kk: 3,
						kl: 3,
						km: 0,
						kn: 0,
						ko: 0,
						ksb: 3,
						ksh: 21,
						ku: 3,
						kw: 7,
						lag: 18,
						lb: 3,
						lg: 3,
						ln: 4,
						lo: 0,
						lt: 10,
						lv: 6,
						mas: 3,
						mg: 4,
						mk: 16,
						ml: 3,
						mn: 3,
						mo: 9,
						mr: 3,
						ms: 0,
						mt: 15,
						my: 0,
						nah: 3,
						naq: 7,
						nb: 3,
						nd: 3,
						ne: 3,
						nl: 3,
						nn: 3,
						no: 3,
						nr: 3,
						nso: 4,
						ny: 3,
						nyn: 3,
						om: 3,
						or: 3,
						pa: 3,
						pap: 3,
						pl: 13,
						ps: 3,
						pt: 3,
						rm: 3,
						ro: 9,
						rof: 3,
						ru: 11,
						rwk: 3,
						sah: 0,
						saq: 3,
						se: 7,
						seh: 3,
						ses: 0,
						sg: 0,
						sh: 11,
						shi: 19,
						sk: 12,
						sl: 14,
						sma: 7,
						smi: 7,
						smj: 7,
						smn: 7,
						sms: 7,
						sn: 3,
						so: 3,
						sq: 3,
						sr: 11,
						ss: 3,
						ssy: 3,
						st: 3,
						sv: 3,
						sw: 3,
						syr: 3,
						ta: 3,
						te: 3,
						teo: 3,
						th: 0,
						ti: 4,
						tig: 3,
						tk: 3,
						tl: 4,
						tn: 3,
						to: 0,
						tr: 0,
						ts: 3,
						tzm: 22,
						uk: 11,
						ur: 3,
						ve: 3,
						vi: 0,
						vun: 3,
						wa: 4,
						wae: 3,
						wo: 0,
						xh: 3,
						xog: 3,
						yo: 0,
						zh: 0,
						zu: 3
					};

					function isIn(n, list) {
						return list.indexOf(n) !== -1;
					}

					function isBetween(n, start, end) {
						return start <= n && n <= end;
					}

					var pluralRules = {
						0: function (n) {
							return 'other';
						},
						1: function (n) {
							if (isBetween(n % 100, 3, 10)) return 'few';
							if (n === 0) return 'zero';
							if (isBetween(n % 100, 11, 99)) return 'many';
							if (n == 2) return 'two';
							if (n == 1) return 'one';
							return 'other';
						},
						2: function (n) {
							if (n !== 0 && n % 10 === 0) return 'many';
							if (n == 2) return 'two';
							if (n == 1) return 'one';
							return 'other';
						},
						3: function (n) {
							if (n == 1) return 'one';
							return 'other';
						},
						4: function (n) {
							if (isBetween(n, 0, 1)) return 'one';
							return 'other';
						},
						5: function (n) {
							if (isBetween(n, 0, 2) && n != 2) return 'one';
							return 'other';
						},
						6: function (n) {
							if (n === 0) return 'zero';
							if (n % 10 == 1 && n % 100 != 11) return 'one';
							return 'other';
						},
						7: function (n) {
							if (n == 2) return 'two';
							if (n == 1) return 'one';
							return 'other';
						},
						8: function (n) {
							if (isBetween(n, 3, 6)) return 'few';
							if (isBetween(n, 7, 10)) return 'many';
							if (n == 2) return 'two';
							if (n == 1) return 'one';
							return 'other';
						},
						9: function (n) {
							if (n === 0 || (n != 1 && isBetween(n % 100, 1, 19))) return 'few';
							if (n == 1) return 'one';
							return 'other';
						},
						10: function (n) {
							if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few';
							if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one';
							return 'other';
						},
						11: function (n) {
							if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
							if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many';
							if (n % 10 == 1 && n % 100 != 11) return 'one';
							return 'other';
						},
						12: function (n) {
							if (isBetween(n, 2, 4)) return 'few';
							if (n == 1) return 'one';
							return 'other';
						},
						13: function (n) {
							if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
							if ((n != 1 && isBetween(n % 10, 0, 1)) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many';
							if (n == 1) return 'one';
							return 'other';
						},
						14: function (n) {
							if (isBetween(n % 100, 3, 4)) return 'few';
							if (n % 100 == 2) return 'two';
							if (n % 100 == 1) return 'one';
							return 'other';
						},
						15: function (n) {
							if (n === 0 || isBetween(n % 100, 2, 10)) return 'few';
							if (isBetween(n % 100, 11, 19)) return 'many';
							if (n == 1) return 'one';
							return 'other';
						},
						16: function (n) {
							if (n % 10 == 1 && n != 11) return 'one';
							return 'other';
						},
						17: function (n) {
							if (n == 3) return 'few';
							if (n === 0) return 'zero';
							if (n == 6) return 'many';
							if (n == 2) return 'two';
							if (n == 1) return 'one';
							return 'other';
						},
						18: function (n) {
							if (n === 0) return 'zero';
							if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one';
							return 'other';
						},
						19: function (n) {
							if (isBetween(n, 2, 10)) return 'few';
							if (isBetween(n, 0, 1)) return 'one';
							return 'other';
						},
						20: function (n) {
							if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few';
							if (n % 1000000 === 0 && n !== 0) return 'many';
							if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two';
							if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one';
							return 'other';
						},
						21: function (n) {
							if (n === 0) return 'zero';
							if (n == 1) return 'one';
							return 'other';
						},
						22: function (n) {
							if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one';
							return 'other';
						},
						23: function (n) {
							if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one';
							return 'other';
						},
						24: function (n) {
							if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few';
							if (isIn(n, [2, 12])) return 'two';
							if (isIn(n, [1, 11])) return 'one';
							return 'other';
						}
					};
					var index = locales2rules[lang.replace(/-.*$/, '')];

					if (!(index in pluralRules)) {
						console.warn('plural form unknown for [' + lang + ']');
						return function () {
							return 'other';
						};
					}

					return pluralRules[index];
				}

				gMacros.plural = function (str, param, key, prop) {
					var n = parseFloat(param);
					if (isNaN(n)) return str;
					if (prop != gTextProp) return str;

					if (!gMacros._pluralRules) {
						gMacros._pluralRules = getPluralRules(gLanguage);
					}

					var index = '[' + gMacros._pluralRules(n) + ']';

					if (n === 0 && key + '[zero]' in gL10nData) {
						str = gL10nData[key + '[zero]'][prop];
					} else if (n == 1 && key + '[one]' in gL10nData) {
						str = gL10nData[key + '[one]'][prop];
					} else if (n == 2 && key + '[two]' in gL10nData) {
						str = gL10nData[key + '[two]'][prop];
					} else if (key + index in gL10nData) {
						str = gL10nData[key + index][prop];
					} else if (key + '[other]' in gL10nData) {
						str = gL10nData[key + '[other]'][prop];
					}

					return str;
				};

				function getL10nData(key, args, fallback) {
					var data = gL10nData[key];

					if (!data) {
						console.warn('#' + key + ' is undefined.');

						if (!fallback) {
							return null;
						}

						data = fallback;
					}

					var rv = {};

					for (var prop in data) {
						var str = data[prop];
						str = substIndexes(str, args, key, prop);
						str = substArguments(str, args, key);
						rv[prop] = str;
					}

					return rv;
				}

				function substIndexes(str, args, key, prop) {
					var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/;
					var reMatch = reIndex.exec(str);
					if (!reMatch || !reMatch.length) return str;
					var macroName = reMatch[1];
					var paramName = reMatch[2];
					var param;

					if (args && paramName in args) {
						param = args[paramName];
					} else if (paramName in gL10nData) {
						param = gL10nData[paramName];
					}

					if (macroName in gMacros) {
						var macro = gMacros[macroName];
						str = macro(str, param, key, prop);
					}

					return str;
				}

				function substArguments(str, args, key) {
					var reArgs = /\{\{\s*(.+?)\s*\}\}/g;
					return str.replace(reArgs, function (matched_text, arg) {
						if (args && arg in args) {
							return args[arg];
						}

						if (arg in gL10nData) {
							return gL10nData[arg];
						}

						console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');
						return matched_text;
					});
				}

				function translateElement(element) {
					var l10n = getL10nAttributes(element);
					if (!l10n.id) return;
					var data = getL10nData(l10n.id, l10n.args);

					if (!data) {
						console.warn('#' + l10n.id + ' is undefined.');
						return;
					}

					if (data[gTextProp]) {
						if (getChildElementCount(element) === 0) {
							element[gTextProp] = data[gTextProp];
						} else {
							var children = element.childNodes;
							var found = false;

							for (var i = 0, l = children.length; i < l; i++) {
								if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) {
									if (found) {
										children[i].nodeValue = '';
									} else {
										children[i].nodeValue = data[gTextProp];
										found = true;
									}
								}
							}

							if (!found) {
								var textNode = document.createTextNode(data[gTextProp]);
								element.insertBefore(textNode, element.firstChild);
							}
						}

						delete data[gTextProp];
					}

					for (var k in data) {
						element[k] = data[k];
					}
				}

				function getChildElementCount(element) {
					if (element.children) {
						return element.children.length;
					}

					if (typeof element.childElementCount !== 'undefined') {
						return element.childElementCount;
					}

					var count = 0;

					for (var i = 0; i < element.childNodes.length; i++) {
						count += element.nodeType === 1 ? 1 : 0;
					}

					return count;
				}

				function translateFragment(element) {
					element = element || document.documentElement;
					var children = getTranslatableChildren(element);
					var elementCount = children.length;

					for (var i = 0; i < elementCount; i++) {
						translateElement(children[i]);
					}

					translateElement(element);
				}

				return {
					get: function (key, args, fallbackString) {
						var index = key.lastIndexOf('.');
						var prop = gTextProp;

						if (index > 0) {
							prop = key.substring(index + 1);
							key = key.substring(0, index);
						}

						var fallback;

						if (fallbackString) {
							fallback = {};
							fallback[prop] = fallbackString;
						}

						var data = getL10nData(key, args, fallback);

						if (data && prop in data) {
							return data[prop];
						}

						return '{{' + key + '}}';
					},
					getData: function () {
						return gL10nData;
					},
					getText: function () {
						return gTextData;
					},
					getLanguage: function () {
						return gLanguage;
					},
					setLanguage: function (lang, callback) {
						loadLocale(lang, function () {
							if (callback) callback();
						});
					},
					getDirection: function () {
						var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];
						var shortCode = gLanguage.split('-', 1)[0];
						return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr';
					},
					translate: translateFragment,
					getReadyState: function () {
						return gReadyState;
					},
					ready: function (callback) {
						if (!callback) {
							return;
						} else if (gReadyState == 'complete' || gReadyState == 'interactive') {
							window.setTimeout(function () {
								callback();
							});
						} else if (document.addEventListener) {
							document.addEventListener('localized', function once() {
								document.removeEventListener('localized', once);
								callback();
							});
						}
					}
				};
			})(window, document);

			/***/
		},
		/* 44 */
		/***/ (__unused_webpack_module, exports, __webpack_require__) => {
			Object.defineProperty(exports, '__esModule', {
				value: true
			});
			exports.GenericScripting = void 0;

			var _pdfjsLib = __webpack_require__(5);

			class GenericScripting {
				constructor(sandboxBundleSrc) {
					this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => {
						return window.pdfjsSandbox.QuickJSSandbox();
					});
				}

				async createSandbox(data) {
					const sandbox = await this._ready;
					sandbox.create(data);
				}

				async dispatchEventInSandbox(event) {
					const sandbox = await this._ready;
					setTimeout(() => sandbox.dispatchEvent(event), 0);
				}

				async destroySandbox() {
					const sandbox = await this._ready;
					sandbox.nukeSandbox();
				}
			}

			exports.GenericScripting = GenericScripting;

			/***/
		}
		/******/
	];
	/************************************************************************/
	/******/ // The module cache
	/******/ var __webpack_module_cache__ = {};
	/******/
	/******/ // The require function
	/******/ function __webpack_require__(moduleId) {
		/******/ // Check if module is in cache
		/******/ var cachedModule = __webpack_module_cache__[moduleId];
		/******/ if (cachedModule !== undefined) {
			/******/ return cachedModule.exports;
			/******/
		}
		/******/ // Create a new module (and put it into the cache)
		/******/ var module = (__webpack_module_cache__[moduleId] = {
			/******/ // no module.id needed
			/******/ // no module.loaded needed
			/******/ exports: {}
			/******/
		});
		/******/
		/******/ // Execute the module function
		/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
		/******/
		/******/ // Return the exports of the module
		/******/ return module.exports;
		/******/
	}
	/******/
	/************************************************************************/
	var __webpack_exports__ = {};
	// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
	(() => {
		var exports = __webpack_exports__;

		Object.defineProperty(exports, '__esModule', {
			value: true
		});
		Object.defineProperty(exports, 'PDFViewerApplication', {
			enumerable: true,
			get: function () {
				return _app.PDFViewerApplication;
			}
		});
		Object.defineProperty(exports, 'PDFViewerApplicationOptions', {
			enumerable: true,
			get: function () {
				return _app_options.AppOptions;
			}
		});

		var _app_options = __webpack_require__(1);

		var _app = __webpack_require__(2);

		const pdfjsVersion = '2.14.305';
		const pdfjsBuild = 'eaaa8b4ad';
		window.PDFViewerApplication = _app.PDFViewerApplication;
		window.PDFViewerApplicationOptions = _app_options.AppOptions;
		{
			__webpack_require__(39);
		}

		function getViewerConfiguration() {
			let errorWrapper = null;
			errorWrapper = {
				container: document.getElementById('errorWrapper'),
				errorMessage: document.getElementById('errorMessage'),
				closeButton: document.getElementById('errorClose'),
				errorMoreInfo: document.getElementById('errorMoreInfo'),
				moreInfoButton: document.getElementById('errorShowMore'),
				lessInfoButton: document.getElementById('errorShowLess')
			};
			return {
				appContainer: document.body,
				mainContainer: document.getElementById('viewerContainer'),
				viewerContainer: document.getElementById('viewer'),
				toolbar: {
					container: document.getElementById('toolbarViewer'),
					numPages: document.getElementById('numPages'),
					pageNumber: document.getElementById('pageNumber'),
					scaleSelect: document.getElementById('scaleSelect'),
					customScaleOption: document.getElementById('customScaleOption'),
					previous: document.getElementById('previous'),
					next: document.getElementById('next'),
					zoomIn: document.getElementById('zoomIn'),
					zoomOut: document.getElementById('zoomOut'),
					viewFind: document.getElementById('viewFind'),
					openFile: document.getElementById('openFile'),
					presentationModeButton: document.getElementById('presentationMode'),
					viewBookmark: document.getElementById('viewBookmark')
				},
				secondaryToolbar: {
					toolbar: document.getElementById('secondaryToolbar'),
					toggleButton: document.getElementById('secondaryToolbarToggle'),
					presentationModeButton: document.getElementById('secondaryPresentationMode'),
					openFileButton: document.getElementById('secondaryOpenFile'),
					viewBookmarkButton: document.getElementById('secondaryViewBookmark'),
					firstPageButton: document.getElementById('firstPage'),
					lastPageButton: document.getElementById('lastPage'),
					cursorSelectToolButton: document.getElementById('cursorSelectTool'),
					cursorHandToolButton: document.getElementById('cursorHandTool'),
					scrollPageButton: document.getElementById('scrollPage'),
					spreadNoneButton: document.getElementById('spreadNone')
				},
				sidebar: {
					outerContainer: document.getElementById('outerContainer'),
					sidebarContainer: document.getElementById('sidebarContainer'),
					toggleButton: document.getElementById('sidebarToggle'),
					thumbnailButton: document.getElementById('viewThumbnail'),
					outlineButton: document.getElementById('viewOutline'),
					attachmentsButton: document.getElementById('viewAttachments'),
					layersButton: document.getElementById('viewLayers'),
					thumbnailView: document.getElementById('thumbnailView'),
					outlineView: document.getElementById('outlineView'),
					attachmentsView: document.getElementById('attachmentsView'),
					layersView: document.getElementById('layersView'),
					outlineOptionsContainer: document.getElementById('outlineOptionsContainer'),
					currentOutlineItemButton: document.getElementById('currentOutlineItem')
				},
				sidebarResizer: {
					outerContainer: document.getElementById('outerContainer'),
					resizer: document.getElementById('sidebarResizer')
				},
				findBar: {
					bar: document.getElementById('findbar'),
					toggleButton: document.getElementById('viewFind'),
					findField: document.getElementById('findInput'),
					highlightAllCheckbox: document.getElementById('findHighlightAll'),
					caseSensitiveCheckbox: document.getElementById('findMatchCase'),
					matchDiacriticsCheckbox: document.getElementById('findMatchDiacritics'),
					entireWordCheckbox: document.getElementById('findEntireWord'),
					findMsg: document.getElementById('findMsg'),
					findResultsCount: document.getElementById('findResultsCount'),
					findPreviousButton: document.getElementById('findPrevious'),
					findNextButton: document.getElementById('findNext')
				},
				passwordOverlay: {
					dialog: document.getElementById('passwordDialog'),
					label: document.getElementById('passwordText'),
					input: document.getElementById('password'),
					submitButton: document.getElementById('passwordSubmit'),
					cancelButton: document.getElementById('passwordCancel')
				},
				errorWrapper,
				openFileInput: document.getElementById('fileInput')
			};
		}

		function webViewerLoad() {
			const config = getViewerConfiguration();
			const event = document.createEvent('CustomEvent');
			event.initCustomEvent('webviewerloaded', true, true, {
				source: window
			});

			try {
				parent.document.dispatchEvent(event);
			} catch (ex) {
				console.error(`webviewerloaded: ${ex}`);
				document.dispatchEvent(event);
			}

			_app.PDFViewerApplication.run(config);
		}

		document.blockUnblockOnload?.(true);

		if (document.readyState === 'interactive' || document.readyState === 'complete') {
			webViewerLoad();
		} else {
			document.addEventListener('DOMContentLoaded', webViewerLoad, true);
		}
	})();

	if (!window.notifyMsg) {
		window.notifyMsg = data => {
			try {
				parent[frameElement.getAttribute('id')](JSON.stringify(data));
			} catch (e) {
				//do nothing
			}
		};
	}

	window.notifyUpdate = data => {
		window.notifyMsg({
			method: 'update',
			data: JSON.stringify(data)
		});
	};

	window.notifyLoad = () => {
		window.notifyMsg({
			method: 'load'
		});
	};

	window.notifyLoad();

	window.notifyUpdate({
		status: 'ready'
	});

	window.notifyPageChange = page => {
		let update = {
			action: 'goto',
			page: page,
			id: changePageNumberOperationId,
			renew: true
		};
		window.notifyUpdate(update);
		// 更新toolbar状态
		Annotate.updateToobar();
	};

	// eslint-disable-next-line no-unused-vars
	window.onStart = data => {};

	window.onUpdate = str => {
		let data = JSON.parse(str);
		let action = data.action;
		if (action === 'open') {
			PDFViewerApplication.open(data.url);
			let interval = setInterval(() => {
				if (Annotate.processUpdateMessage()) {
					clearInterval(interval);
				}
			}, 200);
		} else if (action === 'goto') {
			if (PDFViewerApplication.pdfViewer) {
				PDFViewerApplication.goToPageNumer(data.page);
				// 更新toolbar状态
				Annotate.updateToobar();
			} else {
				window.goto = data.page;
			}
		} else {
			Annotate.onUpdate(data);
		}
	};
})();
